Python shutil模塊文件和目錄操作示例詳解
1. 什么是 shutil 模塊?
shutil 是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,提供了許多用于文件操作和目錄操作的功能,無(wú)論是需要復(fù)制、移動(dòng)、重命名、刪除文件,還是進(jìn)行目錄操作,shutil 都是一個(gè)強(qiáng)大的工具,
shutil
模塊是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)核心模塊,提供了用于文件和目錄操作的功能,包括復(fù)制、移動(dòng)、重命名、刪除文件和目錄等。
shutil
模塊是基于高級(jí)文件操作庫(kù) os
模塊構(gòu)建的,提供了更高級(jí)別的文件操作接口,使文件和目錄的處理更加方便。
通過 shutil
模塊,可以執(zhí)行以下操作:
- 復(fù)制文件和目錄。
- 移動(dòng)文件和目錄。
- 重命名文件和目錄。
- 刪除文件和目錄。
- 創(chuàng)建和刪除目錄。
- 執(zhí)行文件操作的遞歸操作。
- 更多與文件和目錄操作相關(guān)的功能。
shutil
模塊是 Python 編程中的一個(gè)不可或缺的工具,可以更輕松地管理文件和目錄。
2. 文件和目錄操作
2.1. 復(fù)制文件
shutil.copy(src, dst)
函數(shù)用于復(fù)制文件。將源文件復(fù)制到目標(biāo)位置。
示例代碼:
import shutil # 復(fù)制文件 shutil.copy("source_file.txt", "destination_file.txt")
2.2. 復(fù)制目錄
shutil.copytree(src, dst)
函數(shù)用于復(fù)制目錄及其內(nèi)容。遞歸地復(fù)制整個(gè)目錄結(jié)構(gòu)。
示例代碼:
import shutil # 復(fù)制目錄 shutil.copytree("source_directory", "destination_directory")
2.3. 移動(dòng)文件或目錄
shutil.move(src, dst)
函數(shù)用于移動(dòng)文件或目錄??梢杂糜谥孛募?qū)⑽募蚰夸洀囊粋€(gè)位置移動(dòng)到另一個(gè)位置。
示例代碼:
import shutil # 移動(dòng)文件 shutil.move("source_file.txt", "destination_file.txt") # 移動(dòng)目錄 shutil.move("source_directory", "destination_directory")
2.4. 重命名文件或目錄
shutil.move(src, dst)
函數(shù)也可以用于重命名文件或目錄。通過將新路徑傳遞給 dst
參數(shù),可以實(shí)現(xiàn)重命名操作。
示例代碼:
import shutil # 重命名文件 shutil.move("old_file.txt", "new_file.txt") # 重命名目錄 shutil.move("old_directory", "new_directory")
2.5. 刪除文件
shutil.remove(file)
函數(shù)用于刪除文件。
示例代碼:
import shutil # 刪除文件 shutil.remove("file_to_delete.txt")
2.6. 刪除目錄
shutil.rmtree(directory)
函數(shù)用于遞歸地刪除目錄及其內(nèi)容。
示例代碼:
import shutil # 刪除目錄及其內(nèi)容 shutil.rmtree("directory_to_delete")
2.7. 創(chuàng)建目錄
shutil.mkdir(directory)
函數(shù)用于創(chuàng)建目錄。
示例代碼:
import shutil # 創(chuàng)建目錄 shutil.mkdir("new_directory")
2.8. 刪除目錄中的文件
shutil.rmtree(directory)
函數(shù)會(huì)刪除目錄及其內(nèi)容。如果只想刪除目錄中的文件但保留目錄結(jié)構(gòu),可以使用以下方法:
import shutil # 刪除目錄中的文件,保留目錄結(jié)構(gòu) for root, dirs, files in os.walk("directory_to_clean"): for file in files: file_path = os.path.join(root, file) os.remove(file_path)
3. 文件操作的遞歸操作
shutil
模塊提供了許多遞歸操作的函數(shù),可以在文件操作中非常有用。這些函數(shù)可以遞歸地處理文件和目錄,從而簡(jiǎn)化復(fù)雜的操作。
3.1. 遞歸復(fù)制
在 Python 中,使用 shutil.copytree(src, dst)
函數(shù)可以遞歸復(fù)制整個(gè)目錄結(jié)構(gòu),包括子目錄和文件。這個(gè)函數(shù)非常有用,可以將一個(gè)目錄及其所有內(nèi)容復(fù)制到另一個(gè)位置,保留了整個(gè)目錄結(jié)構(gòu)。
使用 shutil.copytree
來遞歸復(fù)制目錄:
import shutil # 源目錄和目標(biāo)目錄 source_directory = "source_directory" destination_directory = "destination_directory" # 使用 copytree 復(fù)制源目錄到目標(biāo)目錄 shutil.copytree(source_directory, destination_directory) print(f"Directory '{source_directory}' has been recursively copied to '{destination_directory}'.")
在上面的示例中,source_directory
中的所有內(nèi)容(包括子目錄和文件)都會(huì)被遞歸復(fù)制到 destination_directory
??梢栽谖募僮髦斜3帜夸浗Y(jié)構(gòu)的完整性。
3.2. 遞歸移動(dòng)
shutil.move(src, dst)
函數(shù)可以用于遞歸地移動(dòng)文件和目錄,包括它們的子目錄和內(nèi)容??梢栽诓煌夸浿g移動(dòng)文件和目錄,并且可以用于重命名文件或目錄。
使用 shutil.move
函數(shù)來遞歸地移動(dòng)文件和目錄:
import shutil # 源目錄或文件和目標(biāo)目錄或文件 source = "source_path" destination = "destination_path" # 使用 move 函數(shù)遞歸移動(dòng)源到目標(biāo) shutil.move(source, destination) print(f"'{source}' has been recursively moved to '{destination}'.")
source
可以是文件或目錄,它及其內(nèi)容將被遞歸地移動(dòng)到 destination
。如果 destination
是目錄,那么 source
將成為 destination
目錄的子目錄。如果 destination
是文件路徑,那么 source
將被移動(dòng)并重命名為 destination
。
3.3. 遞歸刪除
shutil.rmtree(directory)
函數(shù)用于遞歸刪除目錄及其內(nèi)容,包括子目錄和文件。可以輕松地清理整個(gè)目錄樹。
使用 shutil.rmtree
函數(shù)來遞歸刪除目錄:
import shutil # 要?jiǎng)h除的目錄 directory_to_delete = "directory_to_delete" # 使用 rmtree 函數(shù)遞歸刪除目錄及其內(nèi)容 shutil.rmtree(directory_to_delete) print(f"Directory '{directory_to_delete}' has been recursively deleted.")
在上面的示例中,shutil.rmtree
函數(shù)會(huì)刪除 directory_to_delete
目錄以及其中的所有子目錄和文件。這是一個(gè)非常有用的功能,特別需要清理或卸載不再需要的目錄時(shí)。
4. 示例應(yīng)用:備份文件
讓我們看一個(gè)實(shí)際示例,使用 shutil
模塊創(chuàng)建一個(gè)簡(jiǎn)單的文件備份腳本。
import shutil import os import time # 源目錄和目標(biāo)目錄 source_directory = "source_data" backup_directory = "backup_data" # 創(chuàng)建目標(biāo)目錄(如果不存在) if not os.path.exists(backup_directory): os.makedirs(backup_directory) # 獲取當(dāng)前日期作為備份文件夾名稱 backup_folder = time.strftime("%Y-%m-%d") # 創(chuàng)建以當(dāng)前日期為名稱的備份子目錄 backup_path = os.path.join(backup_directory, backup_folder) os.makedirs(backup_path) # 復(fù)制源目錄中的內(nèi)容到備份目錄 shutil.copytree(source_directory, os.path.join(backup_path, source_directory))
此示例會(huì)創(chuàng)建一個(gè)備份文件夾,其中包含了源目錄中的內(nèi)容,以當(dāng)前日期作為子目錄名稱。
5. 結(jié)語(yǔ)
shutil
模塊是 Python 編程中的一個(gè)強(qiáng)大工具,用于進(jìn)行文件和目錄操作。不僅可以進(jìn)行基本的文件復(fù)制、移動(dòng)、重命名和刪除,還可以遞歸地處理目錄結(jié)構(gòu)。通過深入了解 shutil
模塊的功能,您可以更好地掌握如何使用它來處理文件和目錄,從而提高代碼的效率和可維護(hù)性。希望本文的示例和解釋對(duì)您有所幫助,幫助您更好地利用 shutil
模塊來處理文件和目錄。
以上就是Python shutil模塊文件和目錄操作示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python shutil模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python+selenium+Chrome options參數(shù)的使用
這篇文章主要介紹了python+selenium+Chrome options參數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03python 字典(dict)遍歷的四種方法性能測(cè)試報(bào)告
本文主要是針對(duì)Python的字典dict遍歷的4種方法進(jìn)行了性能測(cè)試,以便分析得出效率最高的一種方法2014-06-06淺談Python實(shí)時(shí)檢測(cè)CPU和GPU的功耗
本文主要介紹了淺談Python實(shí)時(shí)檢測(cè)CPU和GPU的功耗,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01python argparse傳入布爾參數(shù)false不生效的解決
這篇文章主要介紹了python argparse傳入布爾參數(shù)false不生效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04使用Python實(shí)現(xiàn)一個(gè)蔡徐坤大戰(zhàn)籃球的小游戲(推薦)
這篇文章主要介紹了用Python實(shí)現(xiàn)一個(gè)蔡徐坤大戰(zhàn)籃球的小游戲,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12