从目录参数获取文件,按大小排序
问题内容:
我正在尝试编写一个使用命令行参数的程序,扫描该参数提供的目录树,并创建目录中每个文件的列表,然后按文件长度排序。
我不是一个脚本专家-但这是我所拥有的,并且不起作用:
import sys
import os
from os.path import getsize
file_list = []
#Get dirpath
dirpath = os.path.abspath(sys.argv[0])
if os.path.isdir(dirpath):
#Get all entries in the directory
for root, dirs, files in os.walk(dirpath):
for name in files:
file_list.append(name)
file_list = sorted(file_list, key=getsize)
for item in file_list:
sys.stdout.write(str(file) + '\n')
else:
print "not found"
谁能指出我正确的方向?
问题答案:
希望此功能可以对您有所帮助(我正在使用Python 2.7):
import os
def get_files_by_file_size(dirname, reverse=False):
""" Return list of file paths in directory sorted by file size """
# Get list of files
filepaths = []
for basename in os.listdir(dirname):
filename = os.path.join(dirname, basename)
if os.path.isfile(filename):
filepaths.append(filename)
# Re-populate list with filename, size tuples
for i in xrange(len(filepaths)):
filepaths[i] = (filepaths[i], os.path.getsize(filepaths[i]))
# Sort list by file size
# If reverse=True sort from largest to smallest
# If reverse=False sort from smallest to largest
filepaths.sort(key=lambda filename: filename[1], reverse=reverse)
# Re-populate list with just filenames
for i in xrange(len(filepaths)):
filepaths[i] = filepaths[i][0]
return filepaths