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

如果由于某种原因这些答案都不起作用,那么总会有:

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

尝试前置os.path

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

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

于 2012-12-04T21:44:25.113 回答
1

getsize未在sorted被调用的名称空间中定义。它是你导入的 module 中的一个函数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 回答