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中运算符使用时的优先级
May 14 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
python获取服务器响应cookie的实例
Dec 28 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
python json.dumps中文乱码问题解决
Apr 01 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
python和opencv构建运动检测器的实现
Mar 03 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
分析Python list操作为什么会错误
Nov 17 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
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
python复制与引用用法分析
2015/04/08 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python中实现输入一个整数的案例
2020/05/03 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
青年志愿者活动总结
2014/04/26 职场文书
答谢会策划方案
2014/05/12 职场文书
师范生求职信
2014/06/14 职场文书
实习生个人总结范文
2015/02/28 职场文书
中秋晚会致辞
2015/07/31 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python