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 def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python使用MD5加密字符串示例
Aug 22 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
Python打印输出数组中全部元素
Mar 13 Python
Python 统计字数的思路详解
May 08 Python
python实现文本界面网络聊天室
Dec 12 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
Python文件时间操作步骤代码详解
Apr 13 Python
如何在pycharm中安装第三方包
Oct 27 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
你需要掌握的20个Python常用技巧
Feb 28 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
图书管理程序(一)
2006/10/09 PHP
PHP 遍历XP文件夹下所有文件
2008/11/27 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
javascript 写类方式之九
2009/07/05 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
tensorflow实现简单的卷积网络
2018/05/24 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
触摸春天教学反思
2014/02/03 职场文书
家长通知书家长意见
2014/12/30 职场文书
明确岗位职责
2015/02/14 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL