Python:没有定义getize

时间:2012-12-04 21:42:54

标签: python python-3.x

我正在尝试根据文件大小对文件进行排序,并将日志存储在文件中。但我得到一个错误,说'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()

3 个答案:

答案 0 :(得分:1)

尝试预先os.path

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

或者,你可以说from os.path import getsize

答案 1 :(得分:1)

getsize未在调用sorted的名称空间中定义。这是您导入的模块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)

但是最后一个选项并不是真的推荐,你应该尝试只导入你真正需要的名字。

答案 2 :(得分:1)

如果出于某种原因,这些答案都不起作用,那么总是存在:

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