2

我在 /home/n00b 目录中创建了一个名为 program1.py 的文件。然后我打开python,我想看看我是否可以编写一个脚本来找到它的位置。我这样做了:

for f in os.walk('/home/n00b'):
     print 'searching', f
     if 'program1.py' in f:
          print 'found'
          break

为什么这不起作用?它似乎正在搜索每个文件,因为我的屏幕充满了“搜索”部分,但它从未找到它。

4

3 回答 3

5

它不起作用,因为os.walk返回一个 3 元组:当前目录、此处的目录名称列表和此处的文件名列表:

for curdir, dirs, files in os.walk('/home/n00b'):
     print 'searching', files
     if 'program1.py' in files:
          print 'found'
          break

您的打印声明应该已经向您展示了这一点。in运算符不会深入查看元组,并且由于您的文件名在任何时候都不是元组中的三个元素之一,因此您的代码没有找到它。

于 2011-09-15T01:39:59.207 回答
0

该功能os.walk()无法按您期望的方式工作。它没有给出文件列表,而是给出了一个包含目录、子目录和文件的元组(类似于列表)。所以,你可以使用:

for d, s, f in os.walk('/home/n00b'):
     print 'searching', d
     if 'program1.py' in f:
          print 'found'
          break

希望能帮助到你。

于 2011-09-15T01:46:07.343 回答
0

您只需更改 f -> f[2] 即可获取 walk 返回的元组的第三个元素。

for f in os.walk('/home/n00b'):
     print 'searching', f
     if 'program1.py' in f[2]:
          print 'found'
          break
于 2011-09-15T01:46:55.200 回答