查询指定目录下文件及文件夹

查询指定目录下文件及文件夹(并输出其所占内存大小)

import os
from os.path import join, getsize
import math

#
# for a,b,c in os.walk(path):
#     print(a)  #路径
#     print(b)  #该目录下的文件夹
#     print(c)  #该目录下的文件

def getdirsize(dir):
    size = 0
    for root, dirs, files in os.walk(dir): #root路径、dirs文件夹目录列表、files文件目录列表
        size += sum([getsize(join(root, name)) for name in files])
    return size

def back(path):#返回上级目录
    if path.count("\\")>=2:
        path = path.rsplit("\\", 1)[0]
        return path
    else:
        print("无法返回上一级")
        return path


def calculate_size(path):  #计算当前目录 文件/文件夹 的大小
    dirs=os.listdir(path)
    print(dirs) #打印当前目录 列表

    file_list=[]
    dir_list=[]

    for a in dirs:
        full_path=path+"\\"+str(a)
        if os.path.isdir(full_path) is True: #如果是文件夹的话
            dir_list.append(a)
        else: #如果是文件的话
            file_list.append(a)
    for i in file_list:
        file_size=getsize(path+"\\"+str(i))/1024/1024
        file_size=round(file_size,2)
        print("文件: ",i.ljust(40),"\t\t\t\t",str(file_size).rjust(40)+"MB")

    for j in dir_list:
        new_path=path+"\\"+str(j)

        dir_size=getdirsize(new_path)/1024
        dir_size=round(dir_size,2)
        j_number=dir_list.index(j)+1
        print("文件夹:{}".format(j_number),j.ljust(40),"\t\t\t\t",str(dir_size).rjust(40)+"KB")

    while True:
        task=eval(input("请输入相应的任务:task1:打开文件夹;task2:返回上一级路径\n"))
        if task==1:
            a = eval(input("打开第几个文件夹"))
            if (a-1) in [i for i in range(len(dir_list))]:
                new_path=path + '\\'+str(dir_list[a-1])
                calculate_size(new_path)
            else:
                print("没有该文件夹")
        elif task==2:
            path=back(path)
            calculate_size(path)



            # #dirsize=round(getdirsize(full_path) / 1024 / 1024,3)
            # dirsize=math.ceil(getdirsize(full_path) / 1024 / 1024)
            # dirsize=str(dirsize)+"MB"
            # print("文件夹: ",a.ljust(40),'\t\t\t',dirsize.rjust(40))

            # filesize=getsize(full_path)
            # #filesize=round(filesize/1024/1024,2) #round->四舍五入,2保留两位小数
            # filesize=math.ceil(filesize/1024/1024) #向上取整
            # filesize=str(filesize)+"MB"
            # print("文件:   ",a.ljust(40),'\t\t\t',filesize.rjust(40))


if __name__ == '__main__':
    path = str(input("请输入你想查询的路径: "))
    calculate_size(path)









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值