# 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_获取文件夹下所有文件的大小的更多相关文章

  1. PHP遍历文件夹下的文件和获取到input name的值

    <?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...

  2. Qt 获取文件夹下所有文件

    Qt 获取文件夹下所有文件代码如下: QStringList getFileNames(const QString &path) { QDir dir(path); QStringList n ...

  3. 使用boost库获取文件夹下所有文件名字

    最近整理项目发现一个曾经找了好久的有用的代码片段,就是获取文件夹下所有文件的名字,和当前文件的绝对路径. 记录一下. 使用的是boost库, #include <boost/filesystem ...

  4. python (9)统计文件夹下的所有文件夹数目、统计文件夹下所有文件数目、遍历文件夹下的文件

    命令:os 用到的:os.walk   os.listdir 写的爬虫爬的数据,但是又不知道进行到哪了,于是就写了个脚本来统计文件的个数 #统计 /home/dir/ 下的文件夹个数 import o ...

  5. FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

    2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

  6. C# 读取指定文件夹下所有文件

    #region 读取文件 //返回指定目录中的文件的名称(绝对路径) string[] files = System.IO.Directory.GetFiles(@"D:\Test" ...

  7. Android读取asserts和raw文件夹下的文件

    Android读取asserts和raw文件夹下的文件 经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的 ...

  8. C# 把一个文件夹下所有文件复制到另一个文件夹下 把一个文件夹下所有文件删除(转)

    C# 把一个文件夹下所有文件复制到另一个文件夹下   public static void CopyDirectory(string srcPath, string destPath) { try { ...

  9. C#遍历文件夹下所有文件

    FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...

  10. python 替换 文件夹下的 文件名称 及 文件内容

    示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...

随机推荐

  1. Anaconda安装和使用 akshare获取股票数据

    介绍 Anaconda是开源的Python包管理器.既是Python各种库的大礼包集合,特别是数据分析和科学计算方面的库都预装了,也是一个能创建虚拟机环境的工具. 我为什么安装 我安装它的原因不是科学 ...

  2. k8s集群调度方案

    Scheduler是k8s集群的调度器,主要的任务是把定义好的pod分配到集群节点上 有以下特征: 1  公平   保证每一个节点都能被合理分配资源或者能被分配资源 2  资源高效利用   集群所有资 ...

  3. CS61A Homework: Church Numerals

    Church Numerals Nagging 南大的 SICP 实际上是 Berkeley CS61A 的 clone ,所以我有幸做到了这个 Homework02. 此外要感谢选课系统,让我一个工 ...

  4. day28 Pyhton 面向对象 继承

    1.昨日回顾 类的命名空间 静态属性\动态属性(方法) 对象的命名空间 #对象的属性 #类指针:对象能够通过这个类指针找到类 #静态属性:属于类,多个对象共享这个资源 #尽量用类名来操作静态属性 #对 ...

  5. 例题3-3 回文词(Palindromes, UVa401)

    输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓 回文串,就是反转以后和原串相同,如abba和madam.所有镜像串,就是左右镜像之后和原串相同,如2S和3AIAE.注意, ...

  6. 【最短路】HDU 1688 Sightseeing

    题目大意 给出一个有向图(可能存在重边),求从\(S\)到\(F\)最短路的条数,如果次短路的长度仅比最短路的长度多1,那么再加上次短路的条数. 输入格式 第一行是数据组数\(T\). 对于魅族数据, ...

  7. rabbitmq 交换机模式一 广播模式 fanout

    <?php require_once "./vendor/autoload.php"; use PhpAmqpLib\Connection\AMQPStreamConnect ...

  8. selenium 提取天猫网页数据

    from time import sleep from selenium import webdriver br = webdriver.Chrome() url = "https://ww ...

  9. hdu1404,hdu1517 (博弈论入门)

    SG定理: 根据Sprague-Grundy定理(SG定理),对于某些博弈论问题可以这样思考: 首先可以确定一个必败状态(记为P)或必胜状态(记为N): 这样一来,若某一状态X若 可以 直接转移到P, ...

  10. for循环结构中的3个表达式缺一不可?

    do-while循环结构结束条件是while后的判断语句不成立for循环结构中的3个表达式都可以为空的.