8 8 shutil 高階的檔案操作

2021-07-10 23:14:45 字數 3445 閱讀 7646

本模組主要提供了一些對檔案和多個檔案的高階操作,比如檔案的拷貝功能、檔案的刪除功能。如果只是想對乙個檔案進行操作,使用os

模組操作就可以了。不過要值得注意的一點是本模組裡拷貝檔案和刪除檔案,在有一些情況下系統的元資料沒有辦法拷貝和刪除。

shutil.copyfileobj(fsrc, fdst[, length])

拷貝檔案類似的物件fsrc

的內容到目標物件

fdst

。引數length

是指明緩衝區的大小,如果是負數表示整個檔案讀取;預設值是讀取一塊磁碟大小的資料,不會占用太多記憶體。如果對檔案物件操作完成之後,再想從頭讀取檔案物件,需要調整檔案物件的位置指標。

例子:#python 3.4

import shutil

src = 'f:\\temp\\py\\codecs1.py'

dst = 'f:\\temp\\py\\test888.py'

with open(src, 'rb') as fsrc:

with open(dst, 'wb') as fdst:

shutil.copyfileobj(fsrc, fdst, 100)

shutil.copyfile(src, dst, *, follow_symlinks=true)

拷貝檔名稱為src

的內容到檔案

dst,返回

dst檔案路徑。

例子:#python 3.4

import shutil

src = 'f:\\temp\\py\\codecs1.py'

dst = 'f:\\temp\\py\\test888.py'

print(shutil.copyfile(src, dst))

結果輸出如下:

f:\temp\py\test888.py

exception shutil.samefileerror

當呼叫函式copyfile()

時,如果原始檔與目標檔案一樣時,就會丟擲這個異常。

shutil.copymode(src, dst, *, follow_symlinks=true)

拷貝檔案的許可權位,不影響檔案的內容、擁有關係和組關係。

shutil.copystat(src, dst, *, follow_symlinks=true)

拷貝檔案的許可權位、最後訪問時間、最後修改時間和標誌,不影響檔案的內容、擁有關係和組關係。

shutil.copy(src, dst, *, follow_symlinks=true)

拷貝檔案src

到檔案或者目錄

dst。如果

dst是目錄,拷貝檔案到目錄裡面。引數

follow_symlinks

為false

,表示如果原始檔是乙個符號連線,目標也拷貝乙個符號連線;如果為

true

,即使原始檔是乙個符號連線,也會拷貝原始檔。

例子:#python 3.4

import shutil

src = 'f:\\temp\\py\\codecs1.py'

dst = 'f:\\temp\\py\\dir1'

print(shutil.copy(src, dst))

結果輸出如下:

f:\temp\py\dir1\codecs1.py

shutil.copy2(src, dst, *, follow_symlinks=true)

與copy

函式一樣的功能,只不過它會盡量拷貝所有檔案相關的元資料。

shutil.ignore_patterns(*patterns)

用來建立乙個忽略引數ignore

,以便copytree()

函式遍歷檔案時可以忽略的引數、檔案和目錄。

shutil.copytree(src, dst, symlinks=false, ignore=none, copy_function=copy2, ignore_dangling_symlinks=false)

遞迴地完全地拷貝乙個目錄到另外乙個目錄。

例子:#python 3.4

import shutil

src = 'f:\\temp\\py\\dir1'

dst = 'f:\\temp\\py\\dir2\\1'

print(shutil.copytree(src, dst))

結果輸出如下:

f:\temp\py\dir2\1

shutil.rmtree(path, ignore_errors=false, οnerrοr=none)

刪除整個目錄樹,路徑必須是乙個目錄而不能是乙個符號連線。引數ignore_errors

設定為true

時,會忽略發生的錯誤;如果設定為

false

時,當錯誤發生就會呼叫

onerrro

錯誤處理函式。

shutil.move(src, dst)

遞迴地移動乙個檔案或目錄到另外目錄位置。

例子:#python 3.4

import shutil

src = 'f:\\temp\\py\\dir2\\1'

dst = 'f:\\temp\\py\\dir1\\2'

print(shutil.move(src, dst))

結果輸出如下:

f:\temp\py\dir1\2

shutil.disk_usage(path)

返回磁碟的使用統計情況,以命名元組形式:(總數,已經使用,可用),單位為位元組。

例子:#python 3.4

import shutil

print(shutil.disk_usage('f:\\'))

結果輸出如下:

usage(total=107373154304, used=93544562688, free=13828591616)

shutil.chown(path, user=none, group=none)

使用乙個路徑的擁有者和組關係。

shutil.which(cmd, mode=os.f_ok | os.x_ok, path=none)

返回路徑cmd

裡可執行檔案的路徑。

例子:#python 3.4

import shutil

print(shutil.which('python'))

結果輸出如下:

c:\python34\python.exe

python之高階的檔案操作shutil模組

shutil high level file operations 高階的檔案操作模組os模組提供了對目錄或者檔案的新建 刪除 檢視檔案屬性,還提供了對檔案以及目錄的路徑操作。比如說 絕對路徑,父目錄 但是,os檔案的操作還應該包含移動 複製 打包 壓縮 解壓等操作,這些os模組都沒有提供。而本章所...

Python檔案操作模組shutil

shutil.copyfileobj fsrc,fdst length import shutil f1 open 1.txt r encoding utf 8 f2 open 2.txt w encoding utf 8 shutil.copyfileobj f1,f2 f1.close f2.c...

shutil模組操作檔案

shutil 或稱為 shell 工具 模組中包含一些函式,讓你在 python 程式中複製 移動 改名和刪除檔案 import os import shutil cwd os.getcwd def copy 複製乙個檔案,返回被複製檔案的新名字 os.makedirs os.path.join c...