欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的shutil模塊使用詳解

 更新時間:2023年09月18日 11:13:44   作者:數(shù)據(jù)分析與統(tǒng)計學之美  
這篇文章主要介紹了Python中的shutil模塊使用詳解,shutil庫作為os模塊的補充,提供了復(fù)制、移動、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的,需要的朋友可以參考下

本文大綱

os模塊是Python標準庫中一個重要的模塊,里面提供了對目錄和文件的一般常用操作。

而Python另外一個標準庫——shutil庫,它作為os模塊的補充,提供了復(fù)制、移動、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。

但是需要注意的是:shutil 模塊對壓縮包的處理是調(diào)用 ZipFile 和 TarFile這兩個模塊來進行的。

在這里插入圖片描述

知識串講

本文所使用的素材,都是基于以下2個文件夾,其中一個文件夾為空。

在這里插入圖片描述

1)模塊導(dǎo)入

import shutil

2)復(fù)制文件

  • 函數(shù):shutil.copy(src,dst)
  • 含義:復(fù)制文件;
  • 參數(shù):src表示源文件,dst表示目標文件夾;
  • 注意:當移動到一個不存在的“目標文件夾”,系統(tǒng)會將這個不存在的“目標文件夾”識別為新的文件夾,而不會報錯;
# 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,系統(tǒng)會默認將“test_shutil_c”識別為文件名,而不是按照我們認為的,移動到一個新的不存在的文件夾。
"""

結(jié)果如下:

在這里插入圖片描述

3)復(fù)制文件夾

  • 函數(shù):shutil.copytree(src,dst)
  • 含義:復(fù)制文件夾;
  • 參數(shù):src表示源文件夾,dst表示目標文件夾;
  • 注意:這里只能是移動到一個空文件夾,而不能是包含其他文件的非空文件夾,否則會報錯PermissionError;

 ① 如果目標文件夾中存在其他文件,會報錯;

# 將a文件夾移動到b文件夾,由于前面的操作,此時b文件夾中已經(jīng)有其他文件
src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b"
shutil.copytree(src,dst)

結(jié)果如下:

在這里插入圖片描述

② 如果指定任意一個目標文件夾,則會自動創(chuàng)建;

# c文件夾原本是不存在的,我們使用了下方的代碼,會自動創(chuàng)建該文件夾
src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c"
shutil.copytree(src,dst)

結(jié)果如下:

在這里插入圖片描述

4)移動文件或文件夾

  • 函數(shù):shutil.move(src,dst)
  • 含義:移動文件/文件夾;
  • 參數(shù):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)

結(jié)果如下:

在這里插入圖片描述

注意:移動文件夾操作類似,我這里就不贅述了,自行下去學習。

5)刪除文件夾(慎用)

  • 函數(shù):shutil.rmtree(src)
  • 含義:刪除文件夾;
  • 參數(shù):src表示源文件夾;
  • 注意:區(qū)別這里和os模塊中remove()、rmdir()的用法,remove()方法只能刪除某個文件,mdir()只能刪除某個空文件夾。但是shutil模塊中的rmtree()可以遞歸徹底刪除非空文件夾;
# 將c文件夾徹底刪除
src = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c"
shutil.rmtree(src)

結(jié)果如下:

在這里插入圖片描述

6)創(chuàng)建和解壓壓縮包

  • zipobj.write():創(chuàng)建一個壓縮包;
  • zipobj.namelist():讀取壓縮包中的文件信息;
  • zipobj.extract():將壓縮包中的單個文件,解壓出來;
  • zipobj.extractall():將壓縮包中所有文件,解壓出來;
  • shutil 模塊對壓縮包的處理是調(diào)用 ZipFile 和 TarFile這兩個模塊來進行的,因此需要導(dǎo)入這兩個模塊;
  • 注意:這里所說的壓縮包,指的是“.zip”格式的壓縮包;

① 創(chuàng)建一個壓縮包

import zipfile
import os
file_list = os.listdir(os.getcwd())
# 將上述所有文件,進行打包,使用“w”
with zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip", "w") as zipobj:
    for file in file_list:
        zipobj.write(file)

結(jié)果如下:

在這里插入圖片描述

② 讀取壓縮包中的文件信息

import zipfile
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    print(zipobj.namelist())

結(jié)果如下:

在這里插入圖片描述

③ 將壓縮包中的單個文件,解壓出來

  • 注意:目標文件夾不存在,會自動創(chuàng)建;
import zipfile
# 將壓縮包中的“test.ipynb”文件,單獨解壓到a文件夾下
dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    zipobj.extract("test.ipynb",dst)

結(jié)果如下:

在這里插入圖片描述

④ 將壓縮包中所有文件,解壓出來;

  • 注意:目標文件夾不存在,會自動創(chuàng)建;
import zipfile
# 將壓縮包中的所有文件,解壓到d文件夾下
dst = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_d"
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
    zipobj.extractall(dst)

結(jié)果如下:

在這里插入圖片描述

到此這篇關(guān)于Python中的shutil模塊使用詳解的文章就介紹到這了,更多相關(guān)Python的shutil模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python導(dǎo)出chrome書簽到markdown文件的實例代碼

    python導(dǎo)出chrome書簽到markdown文件的實例代碼

    python導(dǎo)出chrome書簽到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后輸出到文件即可。下面給大家分享實例代碼,需要的朋友參考下
    2017-12-12
  • springboot配置文件抽離 git管理統(tǒng) 配置中心詳解

    springboot配置文件抽離 git管理統(tǒng) 配置中心詳解

    在本篇文章里小編給大家整理的是關(guān)于springboot配置文件抽離 git管理統(tǒng) 配置中心的相關(guān)知識點內(nèi)容,有需要的朋友們可以學習下。
    2019-09-09
  • python下解壓縮zip文件并刪除文件的實例

    python下解壓縮zip文件并刪除文件的實例

    下面小編就為大家分享一篇python下解壓縮zip文件并刪除文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python命令行引導(dǎo)用戶填寫ssh登錄信息詳解

    python命令行引導(dǎo)用戶填寫ssh登錄信息詳解

    這篇文章主要為大家介紹了python命令行引導(dǎo)用戶填寫ssh登錄信息詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python命令行參數(shù)解析包argparse的使用詳解

    Python命令行參數(shù)解析包argparse的使用詳解

    argparse?是?python?自帶的命令行參數(shù)解析包,可以用來方便的服務(wù)命令行參數(shù)。本文將通過示例和大家詳細講講argparse的使用,需要的可以參考一下
    2022-09-09
  • python類函數(shù)的有效調(diào)用方式

    python類函數(shù)的有效調(diào)用方式

    文章介紹了Python中類的幾種不同方法,并展示了如何有效調(diào)用這些方法,實驗涵蓋了屬性方法、靜態(tài)方法、類方法、普通方法、保護方法和私有方法,并詳細說明了每種方法的調(diào)用方式,文章還討論了如何處理調(diào)用錯誤和返回值,并提供了一些實用建議
    2024-11-11
  • 基于Python開發(fā)網(wǎng)絡(luò)速度監(jiān)控工具

    基于Python開發(fā)網(wǎng)絡(luò)速度監(jiān)控工具

    這篇文章主要為大家詳細介紹了如何基于 PyQt5 框架開發(fā)一個實時網(wǎng)絡(luò)速度監(jiān)控工具,能夠顯示當前設(shè)備的上傳和下載速度,感興趣的小伙伴可以了解下
    2025-01-01
  • Python小進度條顯示代碼

    Python小進度條顯示代碼

    今天小編就為大家分享一篇關(guān)于Python小進度條顯示代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • selenium處理元素定位點擊無效問題

    selenium處理元素定位點擊無效問題

    這篇文章主要介紹了selenium處理元素定位點擊無效問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例

    Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例

    今天小編就為大家分享一篇Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論