打印文件名

时间:2016-02-29 15:14:20

标签: python python-3.x

我对python很新,刚安装Eric6我想搜索文件夹(和所有子目录)以打印任何扩展名为{{1}的文件的文件名我有这个作为我的语法,但它错误说

  

调试程序引发异常未处理的FileNotFoundError
  “[WinError 3]系统无法找到指定的路径'C:'”
  文件:C:\ Users \ pcuser \ EricDocs \ Test.py,Line:6

这是我想要执行的语法:

.pdf

8 个答案:

答案 0 :(得分:9)

使用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')]

答案 1 :(得分:4)

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

所以它在文件夹中搜索值" C",":"," \"," T&#34 ;你也想要逃脱你的逃脱角色,例如" C:\ ... \ ... \"

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

答案 2 :(得分:2)

您的代码中存在一些问题,请查看我在下面对其进行修改的方法:

variable name : GRADLE_USER_HOME
value of variable : E:\repos\gradle

请注意,我已经转义了您的路径名,并删除了您的第一个import os results = [] testdir = "C:\\Test" for f in os.listdir(testdir): if f.endswith('.pdf'): results.append(f) print (results) 。这不是按预期获取文件夹,而是一次选择一个路径字符串的字符。

您需要修改代码才能让它查看所有文件夹,但目前没有。看一下glob模块。

答案 3 :(得分:2)

尝试从C:运行Python脚本。从命令提示符,您可能想要这样做:

> cd C:\    
> python C:\Users\pcuser\EricDocs\Test.py

正如Tony Babarino指出的那样,在代码中使用r"C:\Test"代替"C:\Test"

答案 4 :(得分:2)

您需要在Windows上转义反斜杠,并且可以使用os.walk获取所有pdf文件。

   for root,dirs,files in os.walk(testdir):
       for f in files:
           if f.endswith('.pdf'):
            results.append(f)
   print (results)

答案 5 :(得分:2)

您基本上是使用第一个testdir循环遍历字符串for,然后将每个字符传递给os.listdir(folder)没有任何意义,只需删除第一个for循环并使用fnmatch模块中的fnmatch方法:

import os
from fnmatch import fnmatch

ext = '*.pdf'
results = []
testdir = "C:\Test"
for f in os.listdir(testdir):
    if fnmatch(f, ext):
        results.append(f)

print (results)

答案 6 :(得分:1)

尝试使用testdir = r"C:\Test"代替testdir = "C:\Test"。在python中你必须转义特殊字符,例如\。您也可以使用符号'\'来转义它们,因此它将是"C:\\Test"。通过使用r"C:\Test",您告诉python使用 raw 字符串。

同样for folder in testdir:行也没有意义,因为testdir是一个字符串,所以你基本上试图迭代一个字符串。

答案 7 :(得分:0)

我不得不提到$arrVals = array_values($1JANATAMF) foreach($arrVals as $value){ // Use Html To Create Table and add $value to columns } 模型的训练图像的名称,
这是我打印要保留用于训练Yolo模型的所有图像的名称的步骤

YoloV3

它会打印出当前目录中的所有文件名