问题
假如我们有一个目录里面包含若干个文件和子目录:
问题1:我们要统计该目录下有多少个文件并显示出来(包含子目录)
问题2:该目录总共的大小可以按M,也可以按K显示
问题3:该目录下最大的文件和最小的文件,以及对应的大小
目录为你的python,环境目录:
比如我的目录是:D:\ProgramData\Anaconda3
代码
# -*- coding : utf-8 -*-
# 假如我们有一个目录里面包含若干个文件和子目录:
# 问题1:我们要统计该目录下有多少个文件并显示出来(包含子目录)
# 问题2:该目录总共的大小可以按M,也可以按K显示
# 问题3:该目录下最大的文件和最小的文件,以及对应的大小
import os
path = 'D:\\ProgramData\\Anaconda3'
folders = []
files_info = []
for root, dirs, files in os.walk(path):
folders.extend(dirs)
for f in files:
f_path = os.path.join(root, f)
f_size = round(os.path.getsize(f_path), 3)
files_info.append((f, f_size, f_path))
file_name = [item[2] for item in files_info] + folders
for i in file_name:
print(i)
small_file = sorted(files_info, key=lambda x: x[1], reverse=False)[0][2]
small_file_size = sorted(files_info, key=lambda x: x[1], reverse=False)[0][1]
largest_file = sorted(files_info, key=lambda x: x[1], reverse=True)[0][2]
largest_file_size = sorted(files_info, key=lambda x: x[1], reverse=True)[0][1]
print('Total size:{}'.format(sum(item[1] for item in files_info)))
print('small file name:{}:size:{}'.format(small_file, str(round(small_file_size / 1024)) + 'K'))
print('Largest file name:{}:size:{}'.format(largest_file, str(round(largest_file_size / 1024 / 1024)) + 'M'))
网友评论