在具有部分字符串匹配的目录中查找文件
Find files in a directory with a partial string match
我有一个包含以下文件的目录:
apple1.json.gz
apple2.json.gz
banana1.json.gz
melon1.json.gz
melon2.json.gz
我希望找到所有 apple
、banana
和 melon
文件类型。
由此 SO answer 我知道我可以按文件类型查找:
import glob, os
os.chdir("/mydir")
for file in glob.glob("*.json.gz"):
print(file)
但是,在我的例子中,我无法通过文件名或文件类型进行匹配。相反,它是部分文件名匹配(所有 apple
等等)
在这个SO question中提出了这个解决方案:
[in] for file in glob.glob('/path/apple*.json.gz'):
print file
但是,这个returns零
[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']))
我有一个包含以下文件的目录:
apple1.json.gz
apple2.json.gz
banana1.json.gz
melon1.json.gz
melon2.json.gz
我希望找到所有 apple
、banana
和 melon
文件类型。
由此 SO answer 我知道我可以按文件类型查找:
import glob, os
os.chdir("/mydir")
for file in glob.glob("*.json.gz"):
print(file)
但是,在我的例子中,我无法通过文件名或文件类型进行匹配。相反,它是部分文件名匹配(所有 apple
等等)
在这个SO question中提出了这个解决方案:
[in] for file in glob.glob('/path/apple*.json.gz'):
print file
但是,这个returns零
[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']))