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之网站的结构
Oct 24 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
python实现简单井字棋游戏
Mar 04 Python
用python批量移动文件
Jan 14 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
python 下载文件的几种方式分享
Apr 07 Python
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
May 28 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 空格,换行,跳格使用说明
2009/12/18 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
可输入的下拉框
2006/06/19 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
Json解析的方法小结
2016/06/22 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
python获取本机外网ip的方法
2015/04/15 Python
Python实现合并字典的方法
2015/07/07 Python
python flask 多对多表查询功能
2017/06/25 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
药店主任岗位责任制
2014/02/10 职场文书
电力培训心得体会
2014/09/02 职场文书
党内外群众意见范文
2015/06/02 职场文书
返乡农民工证明
2015/06/24 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫