美文网首页
2019实战第二期-文件实战打卡

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

作者: tipire | 来源:发表于2019-03-20 23:41 被阅读0次

    问题

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

    相关文章

      网友评论

          本文标题:2019实战第二期-文件实战打卡

          本文链接:https://www.haomeiwen.com/subject/jytfvqtx.html