我在/ home / n00b目录中创建了一个名为program1.py的文件。 然后我打开python,我想看看是否可以写一个脚本来找到它的位置。我这样做了:
for f in os.walk('/home/n00b'):
print 'searching', f
if 'program1.py' in f:
print 'found'
break
为什么这不起作用?它似乎是在搜索每个文件,因为我的屏幕填满了“搜索”部分,但它从未找到它。
答案 0 :(得分:4)
它无效,因为os.walk
返回一个3元组:当前目录,此处的目录名列表以及文件名列表:
for curdir, dirs, files in os.walk('/home/n00b'):
print 'searching', files
if 'program1.py' in files:
print 'found'
break
你的印刷声明应该告诉你。 in
运算符不会深入查看元组,因为您的文件名在任何时候都不是元组中的三个元素之一,所以您的代码找不到它。
答案 1 :(得分:0)
函数os.walk()
无法按预期方式运行。它不是给出文件列表,而是给出一个带有目录,子目录和文件的元组(类似于列表)。所以,你可以使用:
for d, s, f in os.walk('/home/n00b'):
print 'searching', d
if 'program1.py' in f:
print 'found'
break
希望它有所帮助。
答案 2 :(得分:0)
你可以改变f - > f [2]得到由walk返回的元组的第3个元素。
for f in os.walk('/home/n00b'):
print 'searching', f
if 'program1.py' in f[2]:
print 'found'
break