python模塊shutil函數應用示例詳解教程
本文大綱
os模塊是Python標準庫中一個重要的模塊,裡面提供瞭對目錄和文件的一般常用操作。而Python另外一個標準庫——shutil庫,它作為os模塊的補充,提供瞭復制、移動、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。但是需要註意的是:shutil 模塊對壓縮包的處理是調用 ZipFile 和 TarFile這兩個模塊來進行的。
知識串講
本文所使用的素材,都是基於以下2個文件夾,其中一個文件夾為空。
1)模塊導入
import shutil
2)復制文件
函數:shutil.copy(src,dst)含義:復制文件;參數:src表示源文件,dst表示目標文件夾;註意:當移動到一個不存在的“目標文件夾”,系統會將這個不存在的“目標文件夾”識別為新的文件夾,而不會報錯;
# 1.將a表的“data.txt”移動到b表 src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b" shutil.copy(src,dst) ------------------------------------------------------------ # 2.將a表的“data.txt”移動到b表,並重新命名為“new_data.txt” src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b\new_data.txt" shutil.copy(src,dst) ------------------------------------------------------------ # 3.將a表的“data.txt”移動到“不存在”的文件夾 src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c" shutil.copy(src,dst) """ 註意:對於情況3,系統會默認將“test_shutil_c”識別為文件名,而不是按照我們認為的,移動到一個新的不存在的文件夾。 """
結果如下:
3)復制文件夾
函數:shutil.copytree(src,dst)
含義:復制文件夾;
參數:src表示源文件夾,dst表示目標文件夾;
註意:這裡隻能是移動到一個空文件夾,而不能是包含其他文件的非空文件夾,否則會報錯PermissionError;
① 如果目標文件夾中存在其他文件,會報錯;
# 將a文件夾移動到b文件夾,由於前面的操作,此時b文件夾中已經有其他文件 src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b" shutil.copytree(src,dst)
結果如下:
② 如果指定任意一個目標文件夾,則會自動創建;
# c文件夾原本是不存在的,我們使用瞭下方的代碼,會自動創建該文件夾 src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c" shutil.copytree(src,dst)
結果如下:
4)移動文件或文件夾
函數:shutil.move(src,dst)
含義:移動文件/文件夾;
參數:src表示源文件/文件夾,dst表示目標文件夾;
註意:文件/文件夾一旦被移動瞭,原來位置的文件/文件夾就沒瞭。目標文件夾不存在時,會報錯;
# 將當前工作目錄下的“a.xlsx”文件,移動到a文件夾下 dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a" shutil.move("a.xlsx",dst) ---------------------------------------------------------------- # 將a文件夾下的“a.xlsx”文件,移動到b文件夾中,並重新命名為“aa.xlsx” src = r"C:/Users/黃偉/Desktop/publish/os模塊/test_shutil_a\a.xlsx" dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b\aa.xlsx" shutil.move(src,dst)
結果如下:
註意:移動文件夾操作類似,我這裡就不贅述瞭,自行下去學習。
5)刪除文件夾(慎用)
函數:shutil.rmtree(src)
含義:刪除文件夾;
參數:src表示源文件夾;
註意:區別這裡和os模塊中remove()、rmdir()的用法,remove()方法隻能刪除某個文件,mdir()隻能刪除某個空文件夾。但是shutil模塊中的rmtree()可以遞歸徹底刪除非空文件夾;
# 將c文件夾徹底刪除 src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c" shutil.rmtree(src)
結果如下:
6)創建和解壓壓縮包
zipobj.write()
:創建一個壓縮包;
zipobj.namelist()
:讀取壓縮包中的文件信息;
zipobj.extract()
:將壓縮包中的單個文件,解壓出來;
zipobj.extractall()
:將壓縮包中所有文件,解壓出來;
shutil
模塊對壓縮包的處理是調用 ZipFile 和 TarFile這兩個模塊來進行的,因此需要導入這兩個模塊;
註意:這裡所說的壓縮包,指的是“.zip”格式的壓縮包;
① 創建一個壓縮包
import zipfile import os file_list = os.listdir(os.getcwd()) # 將上述所有文件,進行打包,使用“w” with zipfile.ZipFile(r"我創建的壓縮包.zip", "w") as zipobj: for file in file_list: zipobj.write(file)
結果如下:
② 讀取壓縮包中的文件信息
import zipfile with zipfile.ZipFile("我創建的壓縮包.zip", "r") as zipobj: print(zipobj.namelist())
結果如下:
③ 將壓縮包中的單個文件,解壓出來 註意:目標文件夾不存在,會自動創建;
import zipfile # 將壓縮包中的“test.ipynb”文件,單獨解壓到a文件夾下 dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a" with zipfile.ZipFile("我創建的壓縮包.zip", "r") as zipobj: zipobj.extract("test.ipynb",dst)
結果如下:
④ 將壓縮包中所有文件,解壓出來; 註意:目標文件夾不存在,會自動創建;
import zipfile # 將壓縮包中的所有文件,解壓到d文件夾下 dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_d" with zipfile.ZipFile("我創建的壓縮包.zip", "r") as zipobj: zipobj.extractall(dst)
結果如下:
以上就是python模塊shutil函數應用示例詳解的詳細內容,更多關於python模塊shutil函數的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python使用shutil操作文件、subprocess運行子程序
- Python利用shutil實現拷貝文件功能
- Python文件目錄操作常用模塊的使用詳解
- Python標準庫之zipfile和tarfile模塊的使用
- Python3壓縮和解壓縮實現代碼