Python 中的高階檔案操作 (shutil)


Python 標準庫的 shutil 模組中定義了許多用於對檔案和目錄進行高階操作的函式。

copy()

此函式將檔案複製到相同或其他目錄中的指定檔案。函式的第一個引數是現有檔案的字串表示形式。第二個引數是結果檔案或目錄的名稱。如果它是一個目錄,則檔案將以相同的名稱複製到其中。原始檔案的元資料不會被保留。

>>> import shutil
>>> shutil.copy("hello.py","newdir/")
'newdir/hello.py'

copy2()

此函式類似於 copy() 函式,除了它保留原始檔的元資料。例如,結果檔案的修改日期屬性將與原始檔案相似。

>>> shutil.copy2('person.py', 'newdir/')
'newdir/person.py'

copyfile()

此函式的兩個字串引數表示檔名。這意味著原始檔案將以指定名稱複製到同一目錄中。

>>> shutil.copyfile('start.py', 'end.py')
'end.py'

copyfileobj()

此函式的引數是檔案物件,而不是表示檔案的字串。檔案物件由 open() 函式獲得。原始檔案應該具有讀取許可權,結果檔案應該以寫入許可權開啟。

>>> f1=open('hello.py','r')
>>> f2=open('python.py','w')
>>> shutil.copyfileobj('f1', 'f2')
>>> shutil.copyfileobj(f1, f2)

move()

此函式遞迴地將檔案和目錄從一個目錄移動到另一個目錄。

>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'

copytree()

此函式遞迴地將一個目錄中的檔案和子目錄複製到另一個目錄。兩個引數的名稱必須是字串。第二個引數名稱的目錄之前不應該存在。要複製單個檔案,內部使用 copy2() 函式。

>>> shutil.copytree('dir1','dir2')
'dir2'

rmtree()

此函式刪除指定目錄中的檔案和子目錄。

>>> shutil.rmtree('dir2')
>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'

disk_usage()

此函式檢索給定目錄的使用統計資訊。

>>> shutil.disk_usage('c:\python36\dir1')
usage(total=245681352704, used=84932993024, free=160748359680)

which()

此函式返回可執行檔案的路徑。

>>> shutil.which('calc')
'C:\WINDOWS\system32\calc.EXE'

make_archive()

此函式構建根目錄中檔案的存檔(zip 或 tar)。

>>> root_dir='newdir'
>>> shutil.make_archive("newdirarch","zip",root_dir)
'C:\python36\newdirarch.zip'

get_archive_formats()

此函式提供所有支援的存檔格式。

>>> shutil.get_archive_formats()
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]

unpack_archive()

此函式提取給定存檔中的檔案。第二個引數是要提取檔案的目錄。如果未給出,則在當前目錄中執行解包。

>>> shutil.unpack_archive('newdirarch.zip','newdir')

更新於: 2020年6月25日

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告