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使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Python中import机制详解
Nov 14 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
python conda操作方法
Sep 11 Python
基于Python实现签到脚本过程解析
Oct 25 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 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判断GIF图片是否为动画的方法
2020/09/04 PHP
Laravel框架表单验证详解
2014/09/04 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
Javascript 面向对象特性
2009/12/28 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
对比分析json及XML
2014/11/28 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
js获取form的方法
2015/05/06 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
python基础知识小结之集合
2015/11/25 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python中的self用法详解
2019/08/06 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
python list多级排序知识点总结
2019/10/23 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
大学生村官考核材料
2014/05/23 职场文书
留学推荐信英文范文
2015/03/26 职场文书
找规律教学反思
2016/02/23 职场文书
js不常见操作运算符总结
2021/11/20 Javascript
Python Pygame实战之塔防游戏的实现
2022/03/17 Python