使用python递归列出目录中的文件时出错

2024-10-02 02:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图列出所有以“.py”结尾的文件。我希望它的显示方式是dirname+filename。我用os.path.join()来做这个。当我把/Users作为起点时,我得到了一个错误但是当我指定大多数.py文件类似于os.walk(r'/Users/name/Pythonfiles')的目录时,我没有得到错误。

这是我想出的代码:

for cdir, dir, files in os.walk(r'/Users'):
    for file in files:
        if file.endswith('.py'):
            filename = os.path.join(cdir, file)
            print filename

我得到的错误:

Traceback (most recent call last):
  File "/Users/name/PythonTutorials/finding_largest_file.py", line 9, in <module>
     filename = os.path.join(dir, file)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 77, in join
     elif path == '' or path.endswith('/'):
AttributeError: 'list' object has no attribute 'ends with'

如果可能的话,请提出一个更好的方法来完成这项任务


Tags: 文件pathnameinpyforos错误
1条回答
网友
1楼 · 发布于 2024-10-02 02:41:18

os.path.join()调用中使用了错误的值。正在迭代的当前目录是os.walk()给出的第一个值,您将该值分配给了cdir

您正在使用由os.walk()返回的second值,这是一个目录名列表

使用:

for cdir, directories, files in os.walk(r'/Users'):
    for file in files:
        if file.endswith('.py'):
            filename = os.path.join(cdir, file)
            print filename

我把dir改名为directories;一个更清晰的名称,并且不屏蔽内置的dir()函数

相关问题 更多 >

    热门问题