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