windwos下如何实现du命令-创新互联

这篇文章给大家介绍windwos下如何实现du命令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联公司从2013年成立,公司以成都网站制作、网站设计、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户千余家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。

本文转自羊皮卷网站,未得授权,不得私自转发
du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小
但是,du命令只支持unix/liunx,他是不支持windows的,怎么样让他支持windows哪。
windwos下如何实现du命令
?在以往的维护过程中,特别是清理日志时,我自己非常频繁使用这个命令,因为可以快速定位目录、文件的大小,是清理磁盘的利器。


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

windwos下如何实现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

关于windwos下如何实现du命令就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


本文名称:windwos下如何实现du命令-创新互联
标题网址:http://azwzsj.com/article/dpcjeo.html