知识摘要:

  • 路径获取方法:

    os.getcwd()、代码指定、用户输入

  • 输入数值:

    eval(input(“筛选最小输出文件大小:”))

  • os 文件遍历、筛选(文件/文件夹)、获取文件大小

    os.listdir 当前路径遍历 os.walk 目录树 os.path.isdir os.path.isfile os.path.getsize

  • 路径拼接

    GR:full_path = path_input+’\‘+fold #双反斜杠 os.path.join

  1. '''文件说明:
  2. 获取指定目录下的所有文件(夹)大小,筛选大小输出
  3. 版本:
  4. V0.2 处理了无法访问文件的报错、以及“开始菜单”报错(return 0)
  5. V0.3 添加while循环持续运行
  6. '''
  7. import os
  8. '''函数说明:
  9. 输入:完整路径;输出:文件大小(M)
  10. GR注:文件大小与文件实际占用空间不同'''
  11. def get_size(start_path):
  12. total_size = 0
  13. if os.path.isdir(start_path): #判断为文件夹
  14. for root, dirs, files in os.walk(start_path): #遍历文件树
  15. for f in files: #root下所有的文件
  16. fp = os.path.join(root, f) #获取完整路径名 路径+文件名
  17. # if not os.path.islink(fp): #略过快捷方式么??
  18. try: #实测某些文件无法获取大小信息
  19. total_size += os.path.getsize(fp) #getsize() 参数必须带路径
  20. except:
  21. print("文件",f,"无法访问")
  22. return round(total_size/1024/1024,2) #返回值单位M,保留两位小数
  23. elif os.path.isfile(start_path): #判断为文件
  24. try:
  25. total_size += os.path.getsize(start_path)
  26. except:
  27. print("文件",start_path,"无法访问")
  28. return round(total_size/1024/1024,2) #返回值单位M,保留两位小数
  29. else:
  30. print("当前路径"+start_path+"既不是文件也不是文件夹?(无法获取大小)")
  31. return 0 #针对 Start Menu的报错问题
  32. while 1:
  33. # path_input = os.getcwd() #获取当前路径
  34. # path_input = "D:\Study\Learn\PythonProject"
  35. path_input = input("输入路径:")
  36. min_output_size = eval(input("筛选最小输出文件大小:")) # 筛选文件大小
  37. folds = os.listdir(path_input) #列表folds:路径下的所有[文件和文件夹]的名称
  38. for fold in folds: #返回的列表元素不带路径
  39. # full_path = os.path.join(path_input, fold) #获取文件的绝对路径
  40. full_path = path_input+'\\'+fold
  41. #等效代码 路径反斜杠需要两个,用于取消转义
  42. size_M = get_size(full_path)
  43. if size_M > min_output_size: #筛选大小
  44. print(fold) # 文件(夹) 名称
  45. print("=" * 15,end='') #不换行
  46. print("大小:",size_M,"M",end='') #文件(夹)大小
  47. print("=" * 15)
  48. # var = input("暂停一下:") #测试输出

相关基础知识记录

import os

获取路径方法

os.getcwd获取当前目录、程序中赋值、用户输入

Dirname = os.getcwd() #获取当前路径
Dirname_2 = “C:/Users/yrzr/Desktop/CNN” #指定默认路径
Dirname_3 = input(“输入路径:”) #输入路径

os.listdir() 获取路径下文件(夹)列表

folds = os.listdir(Dirname) #获取路径下的所有[文件和文件夹]的名称
#返回列表,列表元素不带路径
Ø os.path.isdir/isfile ( ) 判断列表元素具体为何

image.png

Ø os.path.getsize 获取文件大小
fold_size = os.path.getsize(full_name) #获取文件大小,参数必须带路径;返回值单位Byte
print(fold,”大小:%.3f”%(fold_size/1024/1024),”M”) #保留三位小数

os.walk() 目录树遍历

作用:通过在目录树中游走输出在目录中的文件名 参数:文件路径 返回值:三元组(root,dirs,files) root——当前目录(路径+文件夹名) Dirs——列表,内容是root中所有的文件夹(不包括子目录) Files——列表,内容是root中所有的文件(不包括子目录)

应用例:自顶向下扫描全部

image.png image.pngimage.png

Os.path.join() 拼接文件路径

image.png
GR:直接字符串拼接一样

full_path = path_input+’\‘+fold