#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
import glob
formatunit = {1024:['KB','MB','GB','TB'],1000:['KiB','MiB','GiB','TiB']}
def changeformat(size, is1024=True):
useformat = 1024 if is1024 else 1000
for unit in formatunit[useformat]:
size /=useformat
if size<useformat:
return "{0:.2f}{1}".format(size, unit)
raise ValueError('输入数字过大')
path = input("输入文件夹路径:\n")
os.chdir(os.path.normpath(path))
file_list = []
for file in glob.glob("*.*"):
metadata = os.stat(file)
file_list.append({file:metadata.st_size})
file_list = sorted(file_list,key=lambda a:list(a.values())[0],reverse=True)
print('文件排序(由大至小):')
for item in file_list:
name = list(item.keys())[0]
size = list(item.values())[0]
size = changeformat(size)
print('大小:{:10} 文件名:{}'.format(size,name))