一琐馆、實驗?zāi)康?/h3>
利用編寫的方法對硬盤中指定路徑下的文件進行遍歷夭拌,尋找大于指定大小的文件魔熏。
E:/BaiduNetdiskDownload\office2016 軟件安裝包.rar 2420M
E:/BaiduNetdiskDownload\PremiereCC_2018_Win.zip 1470M
E:/BaiduNetdiskDownload\office2016軟件\office2016安裝包\office\data\16.0.4266.1003\stream.x64.x-none.dat 1012M
E:/BaiduNetdiskDownload\office2016軟件\office2016安裝包\office\data\16.0.4266.1003\stream.x86.x-none.dat 869M
E:/BaiduNetdiskDownload\PremiereCC_2018_Win\Pr_2018\products\PPRO\AdobePremierePro12AllTrial.zip 1178M
這是在E盤下的BaiduNetdiskDownload文件夾中大小大于500M的文件。
二鸽扁、實驗步驟
該實例需要兩個主要的步驟蒜绽,分別是遍歷指定路徑下的文件以及返回尋找到的符合條件的文件的大小。
可以利用os包中的walk方法來遍歷指定路徑下的文件桶现,利用os.path.getsize()方法來查看文件大小躲雅。
代碼如下:
import os #導(dǎo)入包
def get_big_file(path,filesize):
"""
找出path路徑下大于filesize的文件
:param path:
:param filesize:
:return:
"""
#遍歷指定的文件夾及其子文件
for dirpath,dirnames,filenames in os.walk(path):
for filename in filenames:
target_file=os.path.join(dirpath,filename) #輸出文件的路徑
#判斷文件是不是鏈接
if not os.path.isfile(target_file):
continue
size=os.path.getsize(target_file) #獲取文件的大小
if size>filesize: #如果大于filesize
size="{size}M".format(size=size//(1024*1024)) #將文件轉(zhuǎn)化為以M為單位,格式化輸出
print(target_file,size) #輸出路徑及文件大小(M)
if __name__ == '__main__':
get_big_file('E:/BaiduNetdiskDownload',500*1024*1024) #大小和路徑可以自己進行調(diào)整的
三骡和、對于os包中一些方法的介紹
1相赁、os.walk()方法
os.walk() 方法用于通過在目錄樹中游走輸出在目錄中的文件名,向上或者向下慰于。
os.walk() 方法是一個簡單易用的文件钮科、目錄遍歷器,可以幫助我們高效的處理文件婆赠、目錄方面的事情绵脯。
os.walk(top[,topdown=True[,onerror=None[,followlinks=False]]])
參數(shù):
①top是你要遍歷的目錄的地址,返回的是一個三元組(root,dirs,files)休里。
root指當前正在遍歷的這個文件夾本身的地址
dirs是一個list蛆挫,內(nèi)容是該文件夾中的所有目錄的名字。(不包括子目錄)
files是一個list妙黍,內(nèi)容是該文件夾中的所有文件悴侵。(不包括子目錄)
②topdown --可選,為 True拭嫁,則優(yōu)先遍歷 top 目錄畜挨,否則優(yōu)先遍歷 top 的子目錄(默認為開啟)。如果 topdown 參數(shù)為 True噩凹,walk 會遍歷top文件夾巴元,與top 文件夾中每一個子目錄。
③onerror -- 可選驮宴,需要一個 callable 對象逮刨,當 walk 需要異常時,會調(diào)用。
④followlinks -- 可選修己,如果為 True恢总,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關(guān)閉),如果為 False睬愤,則優(yōu)先遍歷 top 的子目錄片仿。
【注:這里top參數(shù)在設(shè)置時,如果是絕對路徑如E:\xxx\xxx尤辱,需要在路徑前面加個r砂豌,告訴解釋器保持字符原始值不對\進行轉(zhuǎn)義。r"E:\xxx\xxx"光督⊙艟啵或者不加r,則需要將”\”換成“/”结借】鹫】
2、os.path.join()方法
該方法用于連接兩個或多個路徑名組件船老。如果首字母沒有“/“會默認加上咖熟。更多具體的舉例說明,可以看一下這個鏈接
3柳畔、os.path.isfile()方法
判斷某一對象是否為文件球恤。(需要提供絕對路徑)
參考:http://www.coolpython.net/python_senior/miny_pro/find_big_file.html
https://www.runoob.com/python/os-walk.html