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切片用法实例教程
Sep 08 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
对django 模型 unique together的示例讲解
Aug 06 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
python:动态路由的Flask程序代码
Nov 22 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
pytorch 6 batch_train 批训练操作
May 28 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
一个javascript参数的小问题
2008/03/02 Javascript
ppk谈JavaScript style属性
2008/10/10 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
AngularJS入门之动画
2016/07/27 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python实现身份证号码解析
2015/09/01 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
大学生创业计划书
2019/06/24 职场文书