複数のファイルの中から特定のキーワードを含むファイルを抽出したい
環境
- Windows10
- WinPython (python v=3.8.3)
やりたいこと
下記に示すように、dvという名前のフォルダがあり、その中に7001、7002、という感じで7045まで45のフォルダがあります。それぞれのフォルダの中には複数のAVIファイルが保存されています。ファイル名には必ず丸カッコがあり、その中に何らかのキーワードを含みます。下記の例では、"mino"、"tani、"panorama"、"日野橋"がキーワードです。この質問ではキーワードを"mino"に絞っていますが、複数のキーワードを指定できるようにするため、コードの中ではkeywordsというリストを準備し、その中にキーワードを登録しています。 やりたいことは、このようなフォルダ・ファイル構成の中から、"mino"というキーワードを含むファイル名だけを抽出し、ファイルに書き込むことです。
困っていること
下記に示すコードを実行しても、"mino"を含む全てのファイルは抽出されず、一部の"mino"を含むファイルが抽出されません。なぜそうなるのか分からないので質問しました。
フォルダ・ファイル構成
' dv-+
' +-7001
' | +-- dv7001A(mino).avi
' | +-- dv7001B(日野橋).avi
' |
' +-7002
' | +-- dv7002A(panorama).avi
' | +-- dv7002B(tani).avi
' | +-- dv7002C(mino).avi
コード
Python
1 2def mino(): 3 import os 4 import glob 5 6 os.chdir("d:\\video\dv") 7 8 # キーワードを登録するリスト 9 keywords = ["mino"] 10 11 # "mino"を含むファイルを記録するためのファイルを開く 12 f_is_mino = open("is_mino.txt", mode="wt", encoding="cp932") 13 14 # "mino"を含まないファイルを記録するためのファイルを開く 15 f_is_not_mino = open("is_not_mino.txt", mode="wt", encoding="cp932") 16 17 files = glob.glob("./*") 18 19 for file in files: 20 if not os.path.isfile(file): 21 os.chdir(os.getcwd() + "\" + file[2:]) 22 sub_folder_avi_files = glob.glob("*.avi") 23 24 for sub in sub_folder_avi_files: 25 for i in range(len(keywords)): 26 if keywords[i] in sub: 27 f_is_mino.write(sub + "\n") 28 break 29 30 f_is_not_mino.write(sub + "\n") 31 32 os.chdir("..\") 33 34 f_is_mino.close() 35 f_is_not_mino.close() 36 37 38mino()