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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
python实现网页链接提取的方法分享
Feb 25 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
python实现Decorator模式实例代码
Feb 09 Python
详解django.contirb.auth-认证
Jul 16 Python
python reverse反转部分数组的实例
Dec 13 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
python super用法及原理详解
Jan 20 Python
基于Python生成个性二维码过程详解
Mar 05 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python中list常用操作实例详解
2015/06/03 Python
Python中str.join()简单用法示例
2018/03/20 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python 线程的五个状态
2020/09/22 Python
python 进程池pool使用详解
2020/10/15 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
精彩的推荐信范文
2013/11/26 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书