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)])

...スクリプトを開始したときに、現在の作業ディレクトリ内のファイルの数を常にカウントします。

ただし、より簡単な方法があります。返される各タプルの 3 番目の項目は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 に答える