日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shutil模块,为什么说它是os模块的兄弟模块?

發布時間:2024/9/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shutil模块,为什么说它是os模块的兄弟模块? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文大綱

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():將壓縮包中所有文件,解壓出來;

  • 注意1:shutil模塊對壓縮包的處理是調用ZipFile和TarFile這兩個模塊來進行的,因此需要導入這兩個模塊;

  • 注意2:這里說的壓縮包,指的是“.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?zipfilewith?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)

結果如下:

由于微信平臺算法改版,公號內容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:(1)點擊頁面最上方“小詹學Python”,進入公眾號主頁。 (2)點擊右上角的小點點,在彈出頁面點擊“設為星標”,就可以啦。 感謝支持,比心。

總結

以上是生活随笔為你收集整理的shutil模块,为什么说它是os模块的兄弟模块?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。