python_os_shutil_获取文件夹下所有文件的大小
# sys.argv练习
# 写一个python脚本,在cmd里执行:
python xxx.py 用户名 密码 cp 文件路径 目的地址
python xxx.py alex sb cp D:\python_22\day22\1.内容回顾.py D:\python_22\day21
python xxx.py alex sb rm D:\python_22\day22
python xxx.py alex sb rename D:\python_22\day22 D:\python_22\day23
# 使用walk来计算文件夹的总大小
import os
g = os.walk('D:\python_22')
for i in g :
path,dir_lst,name_lst = i
print(path,name_lst)
# 遍历文件夹计算文件夹的总大小方法总结:
# 1- 递归:
# 获取文件名列表os.listdir(path),遍历文件名列表,获取文件路径os.path.join(path,name),获取文件大小os.path.getsize(abs_path)
import os
def show_file_size(path):
total_size=0
name_lst = os.listdir(path)
for name in name_lst:
abs_path = os.path.join(path,name) # 获取文件路径
if os.path.isfile(abs_path): # 判断是否是文件
total_size+=os.path.getsize(abs_path)
elif os.path.isdir(abs_path): # 如果还是文件夹,递归
# print("here--",abs_path)
total_size+=show_file_size(abs_path) # 递归,层层遍历文件夹找文件
return total_size
total_size=show_file_size(r'C:\Users\12078\PycharmProjects\OldBoy\Day22')
print(total_size, "%.4f MB" % (total_size/1024/1024))
# 2- os.walk (os.walk()是一个生成器函数):
import os
g = os.walk(r'C:\Users\12078\PycharmProjects\OldBoy\Day22')
full_size=0
for i in g : # os.walk()是一个生成器函数 i可以替换为:path,dir_lst,file_lst
path,dir_lst,file_lst = i # 解包
# print(path,dir_lst,file_lst)
# print(file_lst) # 虽然返回的是两个list(因为有子文件夹)但可以一起遍历!
for filename in file_lst:
full_size+=os.path.getsize(os.path.join(path,filename))
print(full_size, "%.4f MB" % (full_size/1024/1024))
# 优化如下:
import os
g = os.walk(r'C:\Users\12078\PycharmProjects\OldBoy\Day22')
full_size = 0
for path, dirs_list, files_list in g:
for file in files_list:
fullname = os.path.join(path, file)
full_size +=os.path.getsize(fullname)
print(full_size, "%.4f MB" % (full_size/1024/1024))
# 把里层的for循环写成迭代器,再用sum来替代 full_size += file_size :
import os
folder_path = r'C:\Users\12078\PycharmProjects\OldBoy\Day22'
full_size = sum(sum(os.path.getsize(os.path.join(parent, file)) for file in files) for parent, dirs, files in os.walk(folder_path))
print(full_size, "%.4f MB" % (full_size/1024/1024))
# 使用sum求和的时候会把生成器的所有元素生成出来,相当于使用了 for i in g
# 3- shutil模块:获取磁盘使用空间(注意是磁盘的空间,不是文件夹或文件的大小,即便给的路径参数是文件夹或文件的绝对地址,计算的也是路径所在磁盘的空间)
# total, used, free = shutil.disk_usage(".") # 解包
# print("当前磁盘共: %iGB, 已使用: %iGB, 剩余: %iGB"%(total / 1073741824, used / 1073741824, free / 1073741824))
import shutil
total_size, used_size, free_size = shutil.disk_usage(r'C:\Users\12078\PycharmProjects\OldBoy\Day22')
print(total_size, "%.4f MB" % (total_size/1024/1024))
python_os_shutil_获取文件夹下所有文件的大小的更多相关文章
- PHP遍历文件夹下的文件和获取到input name的值
<?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...
- Qt 获取文件夹下所有文件
Qt 获取文件夹下所有文件代码如下: QStringList getFileNames(const QString &path) { QDir dir(path); QStringList n ...
- 使用boost库获取文件夹下所有文件名字
最近整理项目发现一个曾经找了好久的有用的代码片段,就是获取文件夹下所有文件的名字,和当前文件的绝对路径. 记录一下. 使用的是boost库, #include <boost/filesystem ...
- python (9)统计文件夹下的所有文件夹数目、统计文件夹下所有文件数目、遍历文件夹下的文件
命令:os 用到的:os.walk os.listdir 写的爬虫爬的数据,但是又不知道进行到哪了,于是就写了个脚本来统计文件的个数 #统计 /home/dir/ 下的文件夹个数 import o ...
- FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有
2018-11-05 19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...
- C# 读取指定文件夹下所有文件
#region 读取文件 //返回指定目录中的文件的名称(绝对路径) string[] files = System.IO.Directory.GetFiles(@"D:\Test" ...
- Android读取asserts和raw文件夹下的文件
Android读取asserts和raw文件夹下的文件 经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的 ...
- C# 把一个文件夹下所有文件复制到另一个文件夹下 把一个文件夹下所有文件删除(转)
C# 把一个文件夹下所有文件复制到另一个文件夹下 public static void CopyDirectory(string srcPath, string destPath) { try { ...
- C#遍历文件夹下所有文件
FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...
- python 替换 文件夹下的 文件名称 及 文件内容
示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...
随机推荐
- Linux软件漏洞-1
RHSA-2018:3107-中危: wpa_supplicant 安全和BUG修复更新 漏洞编号:CVE-2018-14526 漏洞公告:wpa_supplicant中未经身份验证的EAPOL-Ke ...
- 详解gitignore的使用方法,让你尽情使用git add .
大家好,欢迎来到周一git专题. 今天和大家聊聊gitignore的作用,其实如果你英文还可以的话,你应该已经基本上猜到它的作用了.ignore在英文当中的意思是忽视.忽略,gitignore自然就是 ...
- 实现Excel文件的上传和解析
前言 本文思维导图 一.需求描述 实现一个页面上传excel的功能,并对excel中的内容做解析,最后存储在数据库中. 二.代码实现 需求实现思路: 先对上传的文件做校验和解析,这里我们通过Excel ...
- HTML常用标签(下)
HTML常用标签(下) 1. 表格标签 1.1 语法 <table> <!--table定义表格--> <tr> <!--tr定义表格中的行--> &l ...
- 安装Node,创建vue项目,运行及打包
1.安装node js 下载地址:http://nodejs.cn/download/ 2.安装完成后运行Node.js command prompt(node -v查看安装版本) 3.安装npm(由 ...
- 编程语言拟人:来自C++、Python、C语言的“傲娇”自我介绍!
软件工程领域,酷爱编程的人很多,但另一些人总是对此避之不及.而构建软件无疑会让所有人压力山大,叫苦连连. 来看看这些流行编程语言的"内心独白",JAVA现实,C++傲娇,Rus ...
- 扫描仪扫描文件处理-Python批量处理
多进程处理扫描出来的图片,参见: https://github.com/barrer/scan-helper bug问题反馈github提Issues
- jenkins:用jenkins通过ssh部署jar包到远程linux机器(jdk 15 / jenkins 2.257)
一,远程linux机器上安装java15(如已安装,跳过此步) 说明:演示用的linux机器ip: 192.168.1.47 1,下载: [root@blog ~]# cd /usr/local/so ...
- java-类和数组
java内存划分 Java的内存划分为5个部分: 1.栈 (Stack) : 存放的都是方法中的局部变量,方法的运行一定要在栈当中 局部变量: 方法的参数,或者是方法()内部的变量 作用域: 一旦超出 ...
- linux磁盘空间满了
df-h 看到根目录已经用满了! find / -size +100M |xargs ls -lh列出系统内大于100M的文件 du --max-depth=1 -h 查看当前目录内文件夹的大小 看一 ...