无法通过os.walk()找到文件
我在我的 /home/n00b 目录下创建了一个叫 program1.py 的文件。然后我打开了 Python,想看看能不能写个脚本来找到这个文件的位置。我是这么做的:
for f in os.walk('/home/n00b'):
print 'searching', f
if 'program1.py' in f:
print 'found'
break
为什么这样不行呢?看起来它在搜索每个文件,因为我的屏幕上一直显示“正在搜索”,但就是找不到这个文件。
3 个回答
0
你只需要把 f -> f[2] 改一下,就可以获取 walk 返回的元组中的第三个元素。
for f in os.walk('/home/n00b'):
print 'searching', f
if 'program1.py' in f[2]:
print 'found'
break
0
函数 os.walk()
的工作方式可能和你想的不太一样。它不是直接给你一个文件列表,而是返回一个包含三个部分的元组(类似于列表):目录、子目录和文件。所以,你可以这样使用:
for d, s, f in os.walk('/home/n00b'):
print 'searching', d
if 'program1.py' in f:
print 'found'
break
希望这对你有帮助。
5
这个代码不管用是因为 os.walk
返回的是一个三元组:当前目录、这里的目录名称列表,以及这里的文件名列表。
for curdir, dirs, files in os.walk('/home/n00b'):
print 'searching', files
if 'program1.py' in files:
print 'found'
break
你的打印语句应该能显示出这一点。in
操作符不会深入查看这个三元组,而你的文件名在这个三元组的任何时候都不是其中的三个元素,所以你的代码找不到它。