如何使用 Python 將檔案從一個資料夾複製到另一個資料夾?
檔案是儲存在計算機上的資訊或資料的集合。您已經熟悉幾種檔案型別,例如音訊、影片和文字檔案。
文字檔案和二進位制檔案是我們通常將檔案劃分的兩大類。文字檔案包含簡單的文字,而二進位制資料只能被計算機讀取。
一組檔案和子目錄稱為目錄或資料夾。子目錄是在目錄記憶體在的目錄。許多作業系統功能可以自動執行。
使用 Python 進行檔案操作
Python 提供了多種方法來對底層作業系統的檔案和資料夾執行操作。
Python 中的OS 模組 具有新增和刪除資料夾、檢索其內容、更改目錄、查詢當前目錄等功能。匯入此模組,我們將使用它的listdir() 方法 來獲取檔案。
類似地,shutil 模組提供了許多用於處理檔案和相關集合的操作的功能。它允許使用者複製和刪除檔案。您可以使用此模組的 shutil.copy()、shutil.copy2() 和 shutil.copytree() 方法將一個資料夾的內容複製到另一個資料夾。
您可以透過匯入其各自的模組,如下所示,將這些函式包含在您的檔案中:
import shutil shutil.submodule_name(arguments passed)
使用 shutil.copy() 操作
使用此函式,原始檔的文字或內容將複製到目標檔案或目錄。此外,檔案的許可權模式將被保留,但檔案元資料(例如“建立日期”、“修改日期”等)不會被保留。
語法
shutil.copy() 方法的語法如下:
shutil.copy(origin, target)
其中,
源 - 包含原始檔位置或路徑的字串
目標 - 包含目標檔案位置或路徑的字串。
示例
以下是如何使用 shutil.copy() 操作將檔案從一個資料夾複製到另一個資料夾的示例 −
# importing the modules import os import shutil # Providing the folder path origin = 'C:\Users\Lenovo\Downloads\Works' target = 'C:\Users\Lenovo\Downloads\Work TP' # Fetching the list of all the files files = os.listdir(origin) # Fetching all the files to directory for file_name in files: shutil.copy(origin+file_name, target+file_name) print("Files are copied successfully")
輸出
以下是上述查詢的輸出
Files are copied successfully
注意 - 可以使用相對路徑和絕對路徑來複制檔案。路徑指示檔案在磁碟上的位置
絕對路徑包含查詢檔案所需的整個目錄列表。例如,查詢 samples.txt 的絕對路徑為:C:\Users\Lenovo\Downloads\Works。
在這裡,我們提供了檔案源和目標的資料夾路徑。
使用 shutil.copy2() 操作
首先,此函式與copy()完全相同,區別在於它會跟蹤原始檔的元資料。
此程式的執行與 shutil.copy() 完全相同。唯一的區別是,在將檔案提取到目錄時,我們使用 shutil.copy2() 而不是 shutil.copy()。
shutil.copy2(origin+file_name, target+file_name)
語法
shutil.copy2() 方法的語法如下:
shutil.copy2(origin, target)
源和目標值與上面定義的相同。
此程式碼中的 copy2() 函式除了 copy() 之外還執行一個額外的操作,即保留元資料。
使用 shutil.copytree() 方法
此函式將檔案及其包含的任何子目錄從一個目錄移動到另一個目錄。
這意味著源和目標都包含檔案。字串必須包含兩個引數的名稱。
語法
shutil.copytree() 方法的語法如下:
shutil.copytree(origin, target)
源和目標值與上面定義的相同。
示例
以下是如何使用 shutil.copytree() 操作將檔案從一個資料夾複製到另一個資料夾的示例
# importing the module import shutil # Fetching all the files to directory shutil.copytree('C:\Users\Lenovo\Downloads\Works','C:\Users\Lenovo\Downloads\Work TP\/newfolder') print("File Copied Successfully")
輸出
以下是上述查詢的輸出
File Copied Successfully
作為輸出,我們將能夠看到執行後所做的更改,即“Works”資料夾被複制到“Works TP”資料夾,並使用程式碼中分配的“newfolder”名稱,其中包含“Works”資料夾中的所有檔案。
為了獲得該檔案的副本,我們在程式碼中包含了 copytree() 函式。