使用python

时间:2015-05-17 02:10:42

标签: 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'

如果可能的话,请建议更好的方法来完成这项任务。

1 个答案:

答案 0 :(得分:2)

您在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()函数的名称。