用os.walk()找不到文件

时间:2011-09-15 01:34:33

标签: python file search 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 :(得分: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