打印文件名

新手上路,请多包涵

我是 python 的新手,刚刚安装了 Eric6 我想搜索一个文件夹(和所有子目录)以打印扩展名为 .pdf 的任何文件的文件名 --- 我有这个作为我的语法,但它错误地说

被调试程序引发异常未处理的 FileNotFoundError

“[WinError 3] 系统找不到指定的路径‘C:’”

文件:C:\Users\pcuser\EricDocs\Test.py,行:6

这是我要执行的语法:

 import os

results = []
testdir = "C:\Test"
for folder in testdir:
  for f in os.listdir(folder):
    if f.endswith('.pdf'):
        results.append(f)

print (results)

原文由 Michael Mormon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 713
2 个回答

使用 glob 模块。

glob 模块查找与指定模式匹配的所有路径名

import glob, os
parent_dir = 'path/to/dir'
for pdf_file in glob.glob(os.path.join(parent_dir, '*.pdf')):
    print (pdf_file)

这将适用于 Windows 和 *nix 平台。


只要确保您的路径在 Windows 上完全转义,使用原始字符串可能很有用。

在你的情况下,那将是:

 import glob, os
parent_dir = r"C:\Test"
for pdf_file in glob.glob(os.path.join(parent_dir, '*.pdf')):
    print (pdf_file)


对于仅文件名列表(不是完整路径,根据您的评论),您可以这样做:

 results = [os.path.basename(f) for f in glob.glob(os.path.join(parent_dir, '*.pdf')]

原文由 Inbar Rose 发布,翻译遵循 CC BY-SA 3.0 许可协议

现在,您在 testdir 的变量中搜索每个字符串。

所以它在文件夹中搜索值“C”、“:”、“\”、“T”等。您还需要转义转义字符,例如“C:\…\…\”

您可能会改用 os.listdir(testdir) 。

原文由 mattsap 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题