0

サイズに基づいてファイルを並べ替え、ログをファイルに保存しようとしています。しかし、「getsize」が定義されていないというエラーが表示されます。これを修正するのを手伝ってください。

from ClientConfig import ClientConfig
import os
import os.path

class VerifyFileNSize:
    def __init__(self):
        self.config = ClientConfig()
        self.parseInfo()

    def parseInfo(self):
        count = 0
        size = 0
        sort_file = []
        originalPath = os.getcwd()
        os.chdir(self.config.Root_Directory_Path())    
        log = open(self.config.File_Count(),'wb')        
        for root, dirs, files in os.walk("."):            
            for f in files:
                sort_file.append(os.path.join(root, f))

        sorted_file = sorted(sort_file, key=getsize)

        for f in sorted_file:
            log.write((str(os.path.getsize(f)) + " Bytes" + "|" + f  +         os.linesep).encode())                
            size += os.path.getsize(f)
            count += 1
        totalPrint = ("Client: Root:" + self.config.Root_Directory_Path() + " Total     Files:" + str(count) + " Total Size in Bytes:" + str(size) + " Total Size in     MB:" + str(round(size /1024/1024, 2))).encode()
        print(totalPrint.decode())
        log.write(totalPrint)
        log.close()
        os.chdir(originalPath)

if __name__ == "__main__":
    VerifyFileNSize()
4

3 に答える 3

1

付加してみてくださいos.path

sorted_file = sorted(sort_file, key=os.path.getsize)
                                    ^^^^^^^^

または、と言うこともできますfrom os.path import getsize

于 2012-12-04T21:44:25.113 に答える
1

getsizesortedが呼び出される名前空間で定義されていません。これは、インポートしたモジュールの関数os.pathなので、次のように参照できます。

sorted_file = sorted(sort_file, key=os.path.getsize)

別の可能性は次のことです。

from os.path import join, getsize

あるいは:

from os.path import *

それはあなたがすることを可能にするでしょう:

sorted_file = sorted(sort_file, key=getsize)

ただし、最後のオプションは実際には推奨されません。本当に必要な名前のみをインポートするようにしてください。

于 2012-12-04T21:44:27.147 に答える
1

何らかの理由でこれらの答えのどちらも機能しない場合は、常に次のことがあります。

sorted_file = sorted(sort_file, key=lambda x: os.path.getsize(x))
于 2012-12-04T21:52:53.187 に答える