Skip to main content
 首页 » 编程设计

python之os.walk 迭代不在 Python 中行走

2025年05月04日12wayfarer

我正在使用 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"] 

...如果这不是问题所在,那么引用您正在使用的实际代码会有所帮助。