我正在尝试列出以'.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'
如果可能的话,请建议更好的方法来完成这项任务。
答案 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()
函数的名称。