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实现文件路径和url相互转换的方法
Jul 06 Python
python实现将内容分行输出
Nov 05 Python
Python实现带百分比的进度条
Jun 28 Python
python 排序算法总结及实例详解
Sep 28 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python按钮的响应事件详解
Mar 04 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Python和Bash结合在一起的方法
Nov 13 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
?繁体转换的class
2006/10/09 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
Jquery性能优化详解
2014/05/15 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
js实现放大镜特效
2017/05/18 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
预备党员入党感言
2015/08/01 职场文书
环保建议书范文
2015/09/14 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书