无法通过os.walk()找到文件

2 投票
3 回答
3721 浏览
提问于 2025-04-17 02:20

我在我的 /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 操作符不会深入查看这个三元组,而你的文件名在这个三元组的任何时候都不是其中的三个元素,所以你的代码找不到它。

撰写回答