Python实现Linux中的du命令


Posted in Python onJune 12, 2017

实现代码如下:

说明:现在代码已实现du命令的 -s 统计功能,统计与系统du命令稍有差别,比如用ls -ld /root结果为4096,而du计算出来是1040,用当前python计算出来也是4096。另外暂时还没有实现类似于自动根据大小显示为人性化的单位,后续补上

#!/usr/bin/python
#*-*coding:utf8*-*
import sys
import os
from optparse import OptionParser
#使用选项帮助信息可以使用中文
reload(sys)
sys.setdefaultencoding("utf-8")
#定义选项和帮助信息
usage = sys.argv[0] + " [选项]... [对象]..."
parser = OptionParser(usage)
parser.add_option("-s", 
         dest="sum",
         action="store_true",
         default=False,
         help="统计指定对象的的大小总和")
parser.add_option("-a",
         dest="autoDisplay",
         action="store_true",
         default=False,
         help="根据大小自动显示 k,KB,MB,GB 等单位")
options, args = parser.parse_args()
#判断文件或目录是否存在
def noFile(i):
  if not os.path.exists(i):
    sys.stderr.write(i + "\tis not exists\n")
    exit(1)
sum = 0
for i in args:
  noFile(i)
  if os.path.isfile(i):
    size = os.path.getsize(i)
    sum += size
    print("%d\t%s" %(size, i))
  if os.path.isdir(i):
    dir = os.walk(i)
    for x, y, z in dir:
      size = os.path.getsize(x)  #对目录本身进行大小统计,和du统计结果有点不太一样
      sum += size
      if options.sum:
        pass
      else:
        print("%d\t%s" %(size, x))
      for f in z:
        size = os.path.getsize(os.path.join(x, f))  #对目录里面文件进行大小统计
        sum += size
        if options.sum:
          pass
        else:
          print("%d\t%s" %(size, os.path.join(x, f)))
    """如果加上-s选项,这里就输入总的大小"""
    if options.sum:    
      print("%d\t%s" %(sum, i))

程序执行结果如下:

Python实现Linux中的du命令

以上所述是小编给大家介绍的Python实现Linux中的du命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python 3中print函数的使用方法总结
Aug 08 Python
python调用百度语音识别api
Aug 30 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python3.7 sys模块的具体使用
Jul 22 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
pytorch+lstm实现的pos示例
Jan 14 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
python 三边测量定位的实现代码
Apr 22 Python
python正则表达式的使用
Jun 12 #Python
Python简单删除列表中相同元素的方法示例
Jun 12 #Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 #Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 #Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 #Python
详谈python http长连接客户端
Jun 12 #Python
浅谈Python 的枚举 Enum
Jun 12 #Python
You might like
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
jQuery Tools tooltip使用说明
2012/07/14 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python输出9*9乘法表的方法
2015/05/25 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Python闭包函数定义与用法分析
2018/07/20 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
linux安装python修改默认python版本方法
2019/03/31 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
python自动化发送邮件实例讲解
2021/01/04 Python
100%羊绒:NakedCashmere
2020/08/26 全球购物
妇产医师自荐信
2014/01/29 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
教师节联欢会主持词
2015/07/04 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers