您好,登錄后才能下訂單哦!
這篇文章給大家介紹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
關于windwos下如何實現du命令就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。