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 ...
- CSS语法规范与代码风格
CSS语法规范与代码风格 1. 语法规范 CSS规则又两个主要的部分构成:选择器+一条或多条声明. 选择器:用于指定CSS样式的HTML标签,花括号内的是设置的具体样式 属性与属性值以键值对的形式出现 ...
- LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua!
程序员圈子的流行风潮,过几年就怀旧风走一波. 这不,最近Twitter上刮起了一阵编程语言使用历史的风潮. 连图灵奖得主.CNN之父-- Yann LeCun 也参与进来了. 他自曝使用C语言时间最长 ...
- C语言-入门级编程语言--编程小白首选
我们都知道计算机很厉害,利用计算机可以高效地处理和加工信息,随着计算机技术的发展,计算机的功能越来越强大,不但能够处理数值信息,而且还能处理各种文字.图形.图像.动画.声音等非数值信息. 在199 ...
- CentOS8平台php日志的定时切分
一,编写bash脚本: [root@yjweb crontab]# vi split_php_logs.sh 代码: #!/bin/bash # 备份php/php-fpm的日志 # 昨天的日期 fi ...
- 反射(Reflection)
Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...
- Baolu CSV Data Set Config
1.背景 大家在平常使用JMeter测试工具时,对CSV Data Set Config 配置元件肯定不会陌生.如果我们的压测场景涉及到数据库更新操作(如:转账接接口)则需要对参数化数据进行分块,可就 ...
- springboot入门系列(五):SpringBoot连接多RabbitMQ源
SpringBoot连接多RabbitMQ源 在实际开发中,很多场景需要异步处理,这时就需要用到RabbitMQ,而且随着场景的增多程序可能需要连接多个RabbitMQ.SpringBoot本身提供了 ...
- 64位Ubuntu14.04配置adb后提示No such file or directory
配置好SDK的环境变量后,输入adb提示 No such file or directory. 原因:由于是64位的linux系统,而Android SDK只有32位的,需要安装一些支持包才能使用 1 ...
- Vue内容
vue中的过滤器 moeths点击 过滤器的含义 过滤器就是把原有的数据过一遍 放到页面中 不会改变原有的数据 只是在原有的数据上增加新的数据