我正在尝试在python中创建一个脚本来搜索某些类型的文件(例如:.txt
,.jpg
等)。我开始搜索了很长一段时间(包括SO中的帖子),我发现了以下代码片段:
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.txt'):
print file
但是,我无法理解为何使用root, dirs, files
。例如,如果我只使用for file in os.walk(directory)
,则会抛出错误:
"属性错误:'元组' object没有属性' endswith'"。
我在这里缺少什么?
提前致谢!
答案 0 :(得分:1)
docs中描述了root, dirs, files
与os.walk
一起使用的原因:
对于以目录top(包括top本身)为根的树中的每个目录,它会产生一个3元组(dirpath,dirnames,filenames)。
所以,使用root, dirs, files
是处理这个3元组产量的Pythonic方法。否则,您必须执行以下操作:
data = os.walk('/')
for _ in data:
root = _[0]
dirs = _[1]
files = _[2]
元组没有endswith
属性。字符串可能包含在元组中,也可能不包含在元组中。
答案 1 :(得分:0)
os.walk()
返回结果列表,每个结果本身都是一个元组。
如果为每个结果指定一个名称,那么该名称将是一个元组。
元组没有.endswith()
方法。