目錄
- 本文大綱
- 知識串講
- 1)模塊導入
- 2)復制档案
- 3)復制档案夾
- 4)移動档案或档案夾
- 5)刪除档案夾(慎用)
- 6)創建和解壓壓縮包
本文大綱
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函數的資料請關註其它相關文章!
You may also like
相关贴文:
近期文章
- BOOM 與 SHOPIFY REBELLION – 第 2 場 – 觀看阿梅爾酋長和 KOKZ 的派對!
- 使用 PagePilot 作為實現此目的的捷徑! #dropshipping #shopify #ecommerce #ai
- SHOPIFY REBELLON vs BOOM ESPORT [BO2] – TIMADO, YOPAJ 對上 JACKKY, MAC – ESL ONE BANGKOK 2024 DOTA 2
- Dota2 – Team Spirit VS Shopify Rebellion – ESL One 曼谷
- 德國滑雪選手如何打造 Shopify?
- 2024 年 12 月 2 款必銷產品🚀(Shopify 得獎者)
- Shopify Rebellon vs 獵鷹隊 [BO2] – TIMADO, YOPAJ 對 SKITER, AMMAR – ESL ONE BANGKOK 2024 DOTA 2
- 添加這些直銷產品並觀察您的銷售爆炸式增長#dropshipping #shopify
- 我如何在 19 歲時開始在 30 天內從巴基斯坦開始 Shopify Dropshipping 從 0 美元到 1000 美元
發佈留言