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多线程编程(二):启动线程的两种方法
Apr 05 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
Python中字典和集合学习小结
Jul 07 Python
python添加模块搜索路径方法
Sep 11 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
python实现批量修改文件名
Mar 23 Python
Python中npy和mat文件的保存与读取
Apr 24 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
第二节--PHP5 的对象模型
2006/11/16 PHP
php 三维饼图的实现代码
2008/09/28 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
python定时截屏实现
2020/11/02 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
机械专业毕业生推荐信范文
2013/11/25 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
k-means & DBSCAN 总结
2021/04/27 Python
MySQL数字类型自增的坑
2021/05/07 MySQL
JS的深浅复制详细
2021/10/16 Javascript
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS