linux函数实现du,windwos下实现du命令

本文转自,未得授权,不得私自转发

du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小

但是,du命令只支持unix/liunx,他是不支持windows的,怎么样让他支持windows哪。

?在以往的维护过程中,特别是清理日志时,我自己非常频繁使用这个命令,因为可以快速定位目录、文件的大小,是清理磁盘的利器。

如果我们维护了windows服务器的话,查看目录大小要一个一个的选中目录,然后右键,在查看目录大小的话,效率太低了。所以我们可以考虑自己做个命令工具,简单实现du命令,并对目录大小进行排序,就像这样:

用python实现流程分析

1、给用户输入path:

我们建立一个简单的启动函数start,专门用户给用户输入path

def start():

2、根据path,找到目录文件,统计大小,并排序:

我们建立一个list函数,接受path后,找出目录、文件,并将目录名称、文件名称、大小数据放入字典,最后对字典排序,

def list(path):

3、统计文件大小:

def getSize(file):

Start-处理用户的输入

#2、定义用户输入的函数,用户输入n/N,就停止这个程序,输入路径就调用list函数,统计目录及文件

def start():

isNext=1 #定义一个是否继续让用户输入path的变量

while isNext==1:#isNext==1,就继续循环这个输入、处理的过程

path = raw_input("enter path (d:\\\),stop enter n/N: ")#raw_input让用户输入,并获取输入内容

if path=='n' or path=='N':#如果用户输入的死n/N,isNext赋值0,执行完就不在执行了

isNext=0

else:

list(path)#反之,调用list(path)函数,将path交给list处理

#1、开始执行这个文件时,先从start作为main函数开始执行

if __name__=='__main__':

start()

List-罗列pATH下的目录及文件

#3、罗列path下有哪些目录及文件

def list(path):

dirs={}#定义个存放目录的字典

#罗列出path下所有的一级目录及文件

for dp in os.listdir(path):

#3.1、判断dp是否是目录

if os.path.isdir(os.path.join(path,dp)):

dir_size=0#临时存储目录大小

#os.walk遍历目录,取得所有文件

for root,dir,files in os.walk(os.path.join(path,dp)):

for name in files:#每个目录下的文件清单

try:

#累加文件夹下每个文件大小

dir_size +=getsize(os.path.join(root,name))

except Exception, e:

pass

dirs[dp]=dir_size#添加目录及大小

#3.2、文件处理

elif os.path.isfile(os.path.join(path,dp)):

try:

#计算文件大小,并加入到dir字典中

dirs[dp]=getsize(os.path.join(path,dp))

except Exception, e:

pass

#对目录或文件大小排序

ds=sorted(dirs.iteritems(),key=lambda d:d[1],reverse=True)

#输出目录大小

for x in ds:

d = x[0]

size=x[1]

size2=''

if size>=1073741824:

size2=str(size/1024/1024/1024)+' G'

elif size>=106496 and size<=1073741824:

size2=str(size/1024/1024)+' M'

elif size<106496:

size2=str(size/1024/1024)+' Byte'

print '%-50s %50s'%(d,size2)

List-用到的os函数

使用下面函数前先导入os模块

Import os

1、List-罗列pATH下的目录及文件

os.listdir(path)

2、判断是否是目录

os.path.isdir()

3、判断是否文件

os.path.isfile()

4、遍历目录下所有文件

os.walk(path)

5、获取文件大小

os.path.getsize(file)

所有代码

#__author__ = 'luchengjin'

# -*- coding: utf-8 -*-

import os

def getsize(file):

return os.path.getsize(file)

#3、罗列path下有哪些目录及文件

def list(path):

dirs={}#定义个存放目录的字典

#罗列出path下所有的一级目录及文件

for dp in os.listdir(path):

#3.1、判断dp是否是目录

if os.path.isdir(os.path.join(path,dp)):

dir_size=0#临时存储目录大小

#os.walk遍历目录,取得所有文件

for root,dir,files in os.walk(os.path.join(path,dp)):

for name in files:#每个目录下的文件清单

try:

#累加文件夹下每个文件大小

dir_size +=getsize(os.path.join(root,name))

except Exception, e:

pass

dirs[dp]=dir_size#添加目录及大小

#3.2、文件处理

elif os.path.isfile(os.path.join(path,dp)):

try:

#计算文件大小,并加入到dir字典中

dirs[dp]=getsize(os.path.join(path,dp))

except Exception, e:

pass

#对目录或文件大小排序

ds=sorted(dirs.iteritems(),key=lambda d:d[1],reverse=True)

#输出目录大小

for x in ds:

d = x[0]

size=x[1]

size2=''

if size>=1073741824:

size2=str(size/1024/1024/1024)+' G'

elif size>=106496 and size<=1073741824:

size2=str(size/1024/1024)+' M'

elif size<106496:

size2=str(size/1024/1024)+' Byte'

print '%-50s %50s'%(d,size2)

#2、定义用户输入的函数,用户输入n/N,就停止这个程序,输入路径就调用list函数,统计目录及文件

def start():

isNext=1 #定义一个是否继续让用户输入path的变量

while isNext==1:#isNext==1,就继续循环这个输入、处理的过程

path = raw_input("enter path (d:\\\),stop enter n/N: ")#raw_input让用户输入,并获取输入内容

if path=='n' or path=='N':#如果用户输入的死n/N,isNext赋值0,执行完就不在执行了

isNext=0

else:

list(path)#反之,调用list(path)函数,将path交给list处理

#1、开始执行这个文件时,先从start作为main函数开始执行

if __name__=='__main__':

start()

怎么运行

1、windows下:

下载一个python.exe文件,将代码和pyhon.exe放入同一个目录

执行

python.exe du.py

2、linux下执行

du.py

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12591949/viewspace-2137034/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值