我正在使用 os.walk() 检查目录中的冗余文件并将它们列出来。伪代码看起来像这样:
def checkPath(path):
do the for dirname, dirnames, filenames in os.walk(path) thing here...
pathList = ["path1", "path2"]
for each in pathList:
checkPath(each)
所以这在第一次运行时工作正常,我得到了预期的一切,但在第二条路径的下一个 os.walk 上它只是直接跳过...目录名、目录名、文件名中没有任何内容。我做了一些打印语句来检查事情,它正在进入函数,但没有为 os.walk() 部分做任何事情。
在将 os.walk() 部分设为函数以查看它是否可以解决问题之前,它位于与主体内联的 for 循环中。当我尝试(只是为了好玩)用 del 清理 dirname、dirnames、filenames 变量时,在清理的第二条路径上它说变量 dirname 不存在......
所以看起来,无论是否在函数内,os.walk() 的连续迭代都不会填充...
想法?
谢谢!
添加一些工作代码作为例子,就像这样。它在做什么并不重要,只是试图让 os.walk 走多条路径:
import os
def checkPath(path):
for dirname, dirnames, filenames in os.walk(path):
for filename in filenames:
print filename
pathList = ["c:\temp\folder1", "c:\temp\folder2"]
for path in pathList:
checkPath(path)
print "done"
它可以通过这种方式完成(试图看看是否以不同的方式调用 os.walk,就像其他评论者建议的那样,可能会有所帮助),或者它可以在线完成,任何明显有效的......
再次感谢大家,
最佳答案
如果我在我的系统上使用引用非空目录的实际路径,你的代码对我有用。
我怀疑你的线路可能有问题......
pathList = ["c:\temp\folder1", "c:\temp\folder2"]
...因为 \t
和 \f
都是有效的转义序列。
尝试...
pathList = ["c:\\temp\\folder1", "c:\\temp\\folder2"]
...如果这不是问题所在,那么引用您正在使用的实际代码会有所帮助。
关于python - os.walk 迭代不在 Python 中行走,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16341661/