listIncludedFolders = ["Criteria1"]
listExcludedFolders = ["Criteria2"]
for dirpath, dirnames, filenames in os.walk(root):
proceed = False
for each in listIncludedFolders:
if each in dirpath:
proceed = True
if proceed == True:
for each in listExcludedFolders:
if each in dirpath:
proceed = False
if proceed == True:
print(dirpath)
私は次のコードをより平凡な方法で達成しようとしています。ジェネレータを使用すると、1つのリストの項目に基づいて処理を進めることができます。チェック文字列には別個のリストからの値が含まれています/含まれていません
if any(dir in dirpath for dir in listIncludedFolders):
print(dirpath)
...ただし、2番目の比較は追加できません。私は、単一の追加の基準を持っている以下に管理さが、私は、追加の基準のリストを反復処理する必要があります。
if any(dir in dirpath for dir in listIncludedFolders if("Criteria2" not in dirpath)):
print(dirpath)
どのように私は「きれい」これを達成することができますか?
私はここであなたの推薦に従うか分からない。私が見ている結果は、os.walkを使用すると、除外されたディレクトリは入力されていないということです。また、os.path.walkは廃止され、回避されるべきであると理解しました。私は確かにディレクトリ内の時間を無駄にしたくない... – user3535074
'os.path.walk'が推奨されていないヒントに感謝します。上記のコードが除外されたディレクトリにも入ると確信しています。あなたはos.walkでもそれを避けることができます。私はそれに応じて答えを編集しました。 – hvwaldow
ありがとうございます - あなたのコードを試しました。それは私が答えとして投稿したものよりもはるかに速く実行されますが、私が投稿した回答で見つかったものよりも多くのフォルダが見つかります。おそらく、 "if set(dirpath.split(os.path.sep))&set(listIncludedFolders):"という行のためです。この行について説明していただけますか?私は何をしているのか分からない。 – user3535074