次のファイルを含むディレクトリがあります。
Apple1.json.gz
Apple2.json.gz
banana1.json.gz
melon1.json.gz
melon2.json.gz
Apple
、banana
、melon
のすべてのファイルタイプを検索したいと思います。
これから SO回答 ファイルタイプごとに次の方法で検索できることがわかります。
import glob, os
os.chdir("/mydir")
for file in glob.glob("*.json.gz"):
print(file)
ただし、私の場合、ファイル名またはファイルタイプで照合することはできません。むしろそれは部分的なファイル名の一致です(すべてのApple
など)。
この SO質問 では、この解決策が提案されました:
[in] for file in glob.glob('/path/Apple*.json.gz'):
print file
ただし、これはゼロを返します
[out]
0
次のように_/mydir
_にファイルを置く
_mydir
├── Apple1.json.gz
├── Apple2.json.gz
├── banana1.json.gz
├── melon1.json.gz
└── melon2.json.gz
_
あなたはどちらかをすることができます
_import glob
import os
os.chdir('/mydir')
for file in glob.glob('Apple*.json.gz'):
print file
_
または
_import glob
for file in glob.glob('/mydir/Apple*.json.gz'):
print file
_
ディレクトリを変更しても、glob.glob('/absolute/path')
には影響しません。
私は同様のツールを探していて、あなたのケースにうまくいくはずの二重リスト理解方法を開発しました(私は私のケースでテストしました)...
import os
def get_file_names_with_strings(str_list):
full_list = os.listdir("path_to_your_dir")
final_list = [nm for ps in str_list for nm in full_list if ps in nm]
return final_list
print(get_file_names_with_strings(['Apple', 'banana', 'melon']))