Python实现Linux中的du命令

实现代码如下:

说明:现在代码已实现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命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • linux下改良版本mysqldump来备份MYSQL数据库

    因为MYSQLDUMP会为整个库来加一个全局锁定. 如果单纯用MYSQLDUMP进行全库备份会造成以下三个方面的影响. 1.服务器CPU严重阻塞. 2.磁盘I/O直线增加. 3.所有的查询都成了慢查询. 我现在的网站数据库大概是5个G左右,而且每天都有增大. 表结构是MYISAM,INNODB,MEMORY三者混合. 所以单纯用HOTCOPY工具恐怕有点困难.所以我今天简单变了一下我上次写的关于用OUTFILE来备份MYSQL的脚本. 可以解决上面说的三个缺点. 1.备份脚本内容 [david_

  • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度. du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh 一.du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments)

  • Linux du命令查看文件夹大小并按降序排列

    1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du -s /usr/* | sort -rn | head 5.选出排在后面的10个 du -s /usr/* | sort -rn | tail du -h –-max-depth=0 user du -sh –-max-depth=2 | more 总结du常用命令 du -h --max-dept

  • Linux tcpdump命令的用法详细解析

    英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报.它会输出在某个网络接口上符合匹配表达式的报内容的描述.当tcpdump完成抓包后,会打印出类似下面的内容: 9 packets captured56 packets received by filter17 packets dropped by kernel 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户 tcpdump用法 tcpdump -A

  • 一天一个shell命令 linux好管家-磁盘-du命令详解

    du命令 磁盘管理 du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 语法 du [选项][文件] 选项 -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes 以KB(1024bytes)为单位输出. -m或--megabytes 以MB为单位

  • Python实现Linux中的du命令

    实现代码如下: 说明:现在代码已实现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(

  • linux 中的atq命令

    atq命令显示系统中待执行的任务列表,也就是列出当前用户的at任务列表. 语法 atq(选项) 选项 -V:显示版本号: -q:查询指定队列的任务. 实例 at now + 10 minutes at> echo 1111 at> <eot> job 3 at Fri Apr 26 12:56:00 2013 atq 3 Fri Apr 26 12:56:00 2013 a root 总结 以上所述是小编给大家介绍的linux 中的atq命令,希望对大家有所帮助,如果大家有任何疑问

  • 详解Linux中的wget命令

    wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载.这对从那些限定了链接时间的服务器上下载大文件非常有用. 语法 wget(选项)(参数) 选项 -a<日志文件>:在指定的日志文件中记录资料的执行过程: -A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔: -b:进行

  • linux 中的gzip命令

    gzip命令用来压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名. gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用来压缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式.据统计,gzip命令对文本文件有60%-70%的压缩率.减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间. 语法 g

  • Linux 中的gunzip命令

    gunzip命令用来解压缩文件.gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz.事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成. 语法 gunzip(选项)(参数) 选项 -a或--ascii:使用ASCII文字模式: -c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备: -f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号

  • Linux 中的Setfacl命令

    setfacl命令是用来在命令行里设置ACL(访问控制列表).在命令行里,一系列的命令跟随以一系列的文件名. 选项 -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留. -k,--remove-default:删除缺省的acl规则.如果没有缺省规则,将不提示. -n,--no-mask:不要重新计算有效权限.setfacl默认会重新计算ACL mask,除非mask被明确的制定. --mask:重新计算有效权限,即使ACL mask被明确指定

  • Linux 中的 Install命令

    install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点.但是,install允许你控制目标文件的属性.install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录. 语法 install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTOR

  • Linux 中的Logwatch命令

    logwatch命令是一个可定制和可插入式的日志监视系统,它通过遍历给定时间范围内的系统日志文件而产生日志报告.logwatch默认每天执行一次,可以从/etc/cron.daily里看到. 语法 logwatch(选项) 选项 --detail<报告详细程度>:指定日志报告的详细程度: --logfile<日志文件>:仅处理指定的日志文件: --service<服务名>:仅处理指定服务的日志文件: --print:打印结果到标准输出: --mailto<邮件地址

  • Linux 中的 Openssl命令及实例代码

    openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令都有各自的功能,大部分command都可以直接man command查看命令的用法和功能. OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.在Ope

  • Linux中的Syslog命令

     什么是syslog 日志的主要用途是系统审计,监测追踪和分析统计. 为了保证Linux系统正常运行,准确解决遇到的各种各样的系统问题,认真地读取日志文件是管理员的一项非常重要的任务. Linux 内核由很多子系统组成,包括网络,文件访问,内存管理等.子系 统需要给用户传送一些消息,这些消息内容包括消息的来源及其重要性等 .所有的子系统都要把消息送到一个可以维护的公用消息区,于是,就有了syslog. syslog是一个综合的日志记录系统.它的主要功能是:方便日志管理和分类存放日志. syslo

随机推荐