幾分鐘輕松教會您Python目錄操作
對于每一個Python目錄操作的從業(yè)人員,無論是開發(fā)人員、項目經(jīng)理、還是測試人員,掌握了Python這們語言會使我們的編程工作更簡單和更輕松,希望大家能夠從中吸取自己想要的東西。
參數(shù)dirname是當(dāng)前正在訪問的目錄的絕對路徑,而參數(shù)files內(nèi)的文件名則是相對于dirname的相對路徑。在此期間,當(dāng)前工作目錄并沒有改變,那就是說該腳本仍然呆在腳本啟動時刻所在的Python目錄操作中。
這就是為什么我們需要把filepath弄成帶有dirname和file的絕對路徑的原因。若要改變當(dāng)前工作目錄dirname,只要在針對每個目錄調(diào)用os.path.walk的函數(shù)中調(diào)用一下os.chdir(dirname)。
然后在該函數(shù)的末尾重新調(diào)用os.chdir(dirname)將當(dāng)前工作目錄改回原值即可,如下所示:
- def ls(arg, dirname, files):
- print dirname, ’has the files’, files
- os.path.walk(os.environ[’HOME’], ls, None)
- 本例中,參數(shù)arg并非必需,所以在os.path.walk調(diào)用中讓其取值為None即可。
- 為了列出主目錄中所有大于1Mb的文件,可以使用下面的代碼:
- def checksize1(arg, dirname, files):
- for file in files:
- filepath = os.path.join(dirname, file)
- if os.path.isfile(filepath):
- size = os.path.getsize(filepath)
- if size > 1000000:
- sizesize_in_Mb = size/1000000.0
- arg.append((size_in_Mb, filename))
- bigfiles = []
- root = os.environ[’HOME’]
- os.path.walk(root, checksize1, bigfiles)
- for size, name in bigfiles:
- print name, ’大小為’, size, ’Mb’
參數(shù)arg帶來了巨大的靈活性。我們可以使用它來同時存放輸入數(shù)據(jù)和生成的數(shù)據(jù)結(jié)構(gòu)。下一個范例將收集所有大于一定尺寸的帶有規(guī)定擴展名的文件的文件名和大小。輸出的結(jié)果按照文件大小排列。
當(dāng)然,如果您愿意也可以編寫具有類似功能的代碼來替代os.path.walk。下面的代碼,將針對每個文件而非每個目錄來調(diào)用的自定義函數(shù),如下所示:
- def checksize2(fullpath, bigfiles):
- size = os.path.getsize(fullpath)
- if size > 1000000:
- bigfiles.append(’%.2fMb %s’ % (size/1000000.0, fullpath))
- bigfiles = []
- root = os.environ[’HOME’]
- find(checksize2, root, bigfiles)
- for fileinfo in bigfiles:
- print fileinfo
注意為列表排序的函數(shù),bigfiles[’filelist’]函數(shù)中的每個元素就是一個字典,鍵size保存著一個字符串,不過在進行比較之前我們必須將單位Mb(最后兩個字符)去掉,并將其轉(zhuǎn)換為浮點數(shù)。對于文件和目錄的處理,雖然可以通過操作系統(tǒng)命令來完成,但是Python目錄操作為了便于開發(fā)人員以編程的方式處理相關(guān)工作,提供了許多處理文件和目錄的內(nèi)置函數(shù)。
重要的是,這些函數(shù)無論是在Unix、Windows還是Macintosh平臺上,它們的使用方式是完全一致的。本文詳細解釋了這些函數(shù)的使用方法。其中,我們首先介紹了顯示目錄內(nèi)容的功能,然后描述如何測試一個文件名對應(yīng)的是一個標準文件、Python目錄操作還是鏈接。
以及提取文件大小和日期的方法。之后,我們還將介紹如何刪除文件和Python目錄操作,如何復(fù)制和刪除文件,以及怎樣將一個完整的文件路徑分解成目錄部分和文件名部分,最后,我們講解目錄的創(chuàng)建,以及如何在目錄樹中移動目錄并處理文件。
【編輯推薦】