【发布时间】:2013-05-02 15:15:20
【问题描述】:
我正在使用 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 清理目录名、目录名、文件名变量时,在第二条路径上清理时它说变量目录名不存在......
所以看起来,无论是否在函数内,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,就像其他评论者所建议的那样,可能会有所帮助),或者可以内联完成,无论什么明显有效......
再次感谢大家,
【问题讨论】:
-
它跳过的路径是什么?
-
显示一些工作代码来证明你的问题...
-
路径是简单的本地测试数据文件夹(电子表格、文档等)。路径列表 = ["c:\temp\folder1", "c:\temp\folder2"]。这些文件夹中的每一个都有子文件夹,其中包含一些文件。在这种情况下,它通过第一个文件夹进行处理,进入第二个文件夹,但 os.walk 似乎在 dirname、dirnames、filenames 变量中没有产生任何内容......
-
@user1229108 这是散文,不是代码。
-
如果提供给 os.walk 的路径不存在,则 for 循环将终止,而不会为变量分配任何内容或打印任何内容。如何在 for 循环上方添加打印语句以确保目录存在:
print 'checking', path, os.path.isdir(path).
标签: python