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 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
python 多进程通信模块的简单实现
Feb 20 Python
给Python初学者的一些编程技巧
Apr 03 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
Python处理文本换行符实例代码
Feb 03 Python
numpy matrix和array的乘和加实例
Jun 28 Python
python制作简单五子棋游戏
Jun 18 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 Python
python中if及if-else如何使用
Jun 02 Python
Python学习之迭代器详解
Apr 01 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输出xml属性的方法
2015/03/19 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
python计算日期之间的放假日期
2018/06/05 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
金智子午JAVA面试题
2015/09/04 面试题
物业电工岗位职责
2013/11/20 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
售后专员岗位职责
2013/12/08 职场文书
委托书怎样写
2014/08/30 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
升学宴祝酒词
2015/08/11 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers