python - 如何遍历某些扩展名的文件?

标签 python python-3.x

我正在尝试遍历文件夹和所有子文件夹以查找特定文件类型的所有文件 - 例如,仅 .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/

相关文章:

python - XPath:仅获取具有特定子元素的元素

python - 错误 Tensorflow 找不到字段 google.protobuf.EnumDescriptorProto.EnumReservedRange.start

python - Django 项目的 Heroku 日志丢失错误

python - 从 C 线程调用 Python 代码

python - Lambda 函数在 Python 3 和 Python 2 中的行为不同

python - 解析此序列的最佳方法?

python - 进程在 MPIPoolExecutor 初始化之前生成。此外,我可以将 HPC 与 ProccesPoolExecutor 一起使用吗?

python - 导入 cv2 后,在 OSX 中使用 PyQT5 的 objc 奇怪警告

python - 如何使用机器人更改用户的 Twitter 名称?

python - Counter() 和most_common