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

标签 python

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

相关文章:

python - selenium.common.exceptions.WebDriverException : Message: 'chromedriver' executable needs to be in PATH error with Headless Chrome

python - 使用鼠标滚轮和箭头键滚动 `wx.ScrolledPanel`

python - 如何使用map函数将数据框中的所有负数转换为python pandas中所有数字的平均值?

python - 如何使用其他库编译kivy项目?

Python:将方阵提高到负半幂

python - 如何检查 Python 应用程序是否在 AWS lambda 函数中运行?

python - 如何用python拟合非线性函数?

python - 在 Django 中,如何确定给定文本的翻译是否可用?

Python 包和模块

python - 如何使用 python pandas 在循环中加入多个数据帧