0

尝试遍历驱动器上的每个文件夹,计算每个文件夹中的文件数,如果文件数大于或等于 3,则增加计数。应该很容易吧?好吧,我已经完全搞砸了,我很茫然。

import os, os.path, sys

rootdir = 'q:'

documentedcount = 0

for root, subFolders, files in os.walk(rootdir):
    filecount = len([name for name in os.listdir('.') if os.path.isfile(name)])
    print "Filecount = %s" % filecount
    if  filecount >= 3:
        documentedcount =+1
        print "Documented in the loop is %s" % documentedcount

print "Documented = %s" % documentedcount

它不想超出根目录并进入任何子文件夹。这让我发疯了,因为这应该很简单,但我似乎无法理解它。

4

1 回答 1

2

好吧,os.walk()不会在每次迭代时更改工作目录,所以该行...

filecount = len([name for name in os.listdir('.') if os.path.isfile(name)])

...当您启动脚本时,将始终计算当前工作目录中的文件数。

但是,有一个更简单的方法,因为返回的每个元组中的第三项os.walk()已经为您提供了目录中所有(非目录)文件的列表,因此您可以使用len(files)...

import os, os.path, sys

rootdir = 'q:'

documentedcount = 0

for root, subFolders, files in os.walk(rootdir):
    filecount = len(files)
    print "Filecount = %s" % filecount
    if filecount >= 3:
        documentedcount =+1
        print "Documented in the loop is %s" % documentedcount

print "Documented = %s" % documentedcount
于 2013-05-31T19:59:27.407 回答