我正在尝试遍历文件夹和所有子文件夹以查找特定文件类型的所有文件 - 例如,仅 .mp4、.avi、.wmv。
这是我现在拥有的,它遍历所有文件类型:
import os
rootdir = 'input'
for subdir, dirs, files in os.walk(rootdir):
for file in files:
print (os.path.join(subdir, file))
最佳答案
对于多个扩展,最简单的就是使用 str.endswith
传递一个子字符串元组来检查:
for file in files:
if file.endswith((".avi",".mp4","wmv")):
print (os.path.join(subdir, file))
您可以像下面那样使用 iglob
并链接返回的搜索或使用 re.search 但使用 endswith
可能是最好的方法。
from itertools import chain
from glob import iglob
for subdir, dirs, files in os.walk(rootdir):
for file in chain.from_iterable(iglob(os.path.join(rootdir,p)) for p in ("*.avi", "*.mp4", "*wmv")) :
print(os.path.join(subdir, file))
使用 python3.5
glob现在支持使用 ** 语法的递归搜索:
from itertools import chain
from glob import iglob
from glob import iglob
for file in chain.from_iterable(iglob(os.path.join(rootdir,p))
for p in (rootdir+"**/*.avi", "**/*.mp4", "**/*wmv")):
print(file)
关于python - 如何遍历某些扩展名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948528/