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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Python3.7中安装openCV库的方法
Jul 11 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
解决Django连接db遇到的问题
Aug 29 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
pymysql模块的操作实例
Dec 17 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python 弧度与角度互转实例
Apr 15 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 insert语法详解
2008/06/07 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
Python中的进程分支fork和exec详解
2015/04/11 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
python使用tkinter实现简单计算器
2018/01/30 Python
django session完成状态保持的方法
2018/11/27 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
毕业生自荐信
2013/12/14 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
2016年公司新年寄语
2015/08/17 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python