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编程之gui程序实现简单文件浏览器代码
Dec 08 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
python中update的基本使用方法详解
Jul 17 Python
简单介绍python封装的基本知识
Aug 10 Python
python pycharm的安装及其使用
Oct 11 Python
Python使用windows设置定时执行脚本
Nov 12 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使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
详解Python多线程
2016/11/14 Python
python实现屏保计时器的示例代码
2018/08/08 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Django的models中on_delete参数详解
2019/07/16 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
J2EE面试题
2016/03/14 面试题
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
市三好学生主要事迹
2014/01/28 职场文书
三方股东合作协议书
2014/10/28 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
行政前台岗位职责
2015/04/16 职场文书
亲情作文之母爱
2019/09/25 职场文书