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求pi的方法
Oct 08 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
Swift中的协议(protocol)学习教程
Jul 08 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
谈谈python中GUI的选择
Mar 01 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
python文件名和文件路径操作实例
2017/09/29 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
七一表彰活动方案
2014/01/18 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
爬山的活动方案
2014/08/16 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2016小学新学期寄语
2015/12/04 职场文书