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 统计代码行数简单实例
May 04 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
python版学生管理系统
Jan 10 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
浅析Python装饰器以及装饰器模式
May 28 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
分享几种python 变量合并方法
Mar 20 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中显示格式化的用户输入
2006/10/09 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php实现图片添加水印功能
2014/02/13 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
Python优先队列实现方法示例
2017/09/21 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
财务副总经理工作职责
2013/11/25 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
副总经理任命书
2014/06/05 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
python多线程方法详解
2022/01/18 Python