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 相关文章推荐
关于Django外键赋值问题详解
Aug 13 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python opencv之SIFT算法示例
Feb 24 Python
selenium+python实现自动登录脚本
Apr 22 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python3 webp转gif格式的实现示例
Dec 10 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
python集成开发环境配置(pycharm)
Feb 14 Python
python学习笔记之多进程
Aug 06 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
一文搞懂如何实现Go 超时控制
Mar 30 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
JavaScript高级程序设计
2006/12/29 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
react 生命周期实例分析
2020/05/18 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python日志模块logging简介
2015/04/13 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
python实现的分层随机抽样案例
2020/02/25 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
结婚典礼证婚词
2014/01/11 职场文书
运动会入场词200字
2014/02/15 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
ktv好的活动方案
2014/08/15 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书