2019实战第二期-文件实战打卡

问题

假如我们有一个目录里面包含若干个文件和子目录:
问题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'))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,418评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,803评论 0 10
  • 后来,那光晕化开了,粉饰着她朦胧的脸,她踮起脚尖,端望那座老旧的小楼。破旧的玻璃窗上,折射着屋里破败的景象,尘埃,...
    夏夜轩阅读 501评论 0 1
  • 念卿 文/少年郎 细雨潇潇不月夜,猿声四起蝉哀鸣。 花残散落红满地,絮轻飘飞...
    残霞少年阅读 299评论 1 1
  • 第一次看这部电影《影》的时候,老实说我没看完,本来就是冲着演员看的,结果点开一看画面感很灰暗,等到郑恺演的沛...
    番茄豆腐麻辣烫阅读 3,214评论 0 0