Python中的shutil庫提供了一組高級文件操作介面,其中shutil.move()函數是其中之一。它可以將一個文件或文件夾移動到另一個路徑,並重命名該文件或文件夾。
一、shutil.move函數
shutil.move()函數具有以下形式:
shutil.move(src, dst, copy_function=copy2)
其中,src是想要移動的文件夾或文件名(包括路徑),dst是目標路徑,而copy_function是一個可選參數,它定義了如何複製文件。默認的複製方法是copy2方法,該方法將保留所有文件元數據。
二、shutil.move把文件弄不見了
當使用shutil.move()函數時,需要注意以下幾點:
1、如果目標路徑中已經存在同名的文件或文件夾,則會覆蓋它。
2、如果源文件不存在,將會拋出一個錯誤。
3、如果目標路徑是一個文件夾,則shutil.move()會將源文件移動到該文件夾中,並使用源文件的名稱進行重命名。
下面的代碼演示了一個將文件移動到指定目錄的實例:
import shutil
shutil.move('C:/Users/PycharmProjects/test/test.txt', 'C:/Users/PycharmProjects/result.txt')
上面的代碼將’C:/Users/PycharmProjects/test/test.txt’文件移動到’C:/Users/PycharmProjects/’目錄下,並重命名為result.txt。
三、shutil.move 覆蓋
如前所述,如果目標路徑已經存在同名的文件或文件夾,則shutil.move()將覆蓋它。
為了避免該問題,可以在使用shutil.move()之前檢查目標路徑是否存在。下面的代碼演示了這一點:
import shutil
import os
if os.path.exists('C:/Users/PycharmProjects/result.txt'):
os.remove('C:/Users/PycharmProjects/result.txt')
shutil.move('C:/Users/PycharmProjects/test/test.txt', 'C:/Users/PycharmProjects/result.txt')
代碼中,首先使用os.path.exists()檢查目標路徑C:/Users/PycharmProjects/result.txt是否存在,如果存在則刪除該文件。然後再使用shutil.move()將源文件移動到目標路徑。
四、shutil.move的用法
shutil.move()函數有以下用法:
1、移動文件夾到指定的目錄並更改名稱。
shutil.move('C:/Users/PycharmProjects/test_folder', 'C:/Users/PycharmProjects/folder_new_name')
上面的代碼將’C:/Users/PycharmProjects/test_folder’文件夾移動到’C:/Users/PycharmProjects’目錄下,並將其重命名為’folder_new_name’。
2、移動文件到指定的目錄並更改名稱。
shutil.move('C:/Users/PycharmProjects/test/test.txt', 'C:/Users/PycharmProjects/result.txt')
上面的代碼將’C:/Users/PycharmProjects/test/test.txt’文件移動到’C:/Users/PycharmProjects’目錄下,並將其重命名為’result.txt’。
3、移動文件到指定目錄並強制覆蓋目標文件。
shutil.move('C:/Users/PycharmProjects/test_folder', 'C:/Users/PycharmProjects/folder_new_name', copy_function=shutil.copy)
上面的代碼將’C:/Users/PycharmProjects/test_folder’文件夾移動到’C:/Users/PycharmProjects’目錄下,並強制覆蓋’C:/Users/PycharmProjects/folder_new_name’文件夾。
五、shutil.move 重命名
shutil.move()函數可以重命名一個文件,只需將文件的路徑設置為新名稱即可。下面的代碼演示了這個功能:
shutil.move('C:/Users/PycharmProjects/result.txt', 'C:/Users/PycharmProjects/new_name.txt')
上面的代碼將’C:/Users/PycharmProjects/result.txt’重命名為’C:/Users/PycharmProjects/new_name.txt’。
六、shutil.move函數報錯
當源文件不存在或目標文件已經存在時,shutil.move()函數會拋出錯誤。可以使用try/except語句來處理異常,並確保程序正常運行。下面的代碼演示了這一點:
import shutil
import os
try:
shutil.move('C:/Users/PycharmProjects/test_folder', 'C:/Users/PycharmProjects/folder_new_name')
except Exception as e:
print('An error occurred: {}'.format(e))
if os.path.exists('C:/Users/PycharmProjects/folder_new_name'):
print('Folder renamed successfully.')
代碼中,首先嘗試使用shutil.move()函數重命名’C:/Users/PycharmProjects/test_folder’為’C:/Users/PycharmProjects/folder_new_name’,如果出現錯誤則在控制台列印異常信息。然後使用os.path.exists()來檢查’C:/Users/PycharmProjects/folder_new_name’是否存在,如果存在則輸出相應信息,若不存在則不輸出。
七、shutil.move 覆蓋文件
如前所述,使用shutil.move()函數移動文件時,如果目標路徑已經存在同名的文件,則shutil.move()將覆蓋它。為了避免數據丟失,可以在移動之前先備份目標文件。下面的代碼演示了這一點:
import shutil
import os
if os.path.exists('C:/Users/PycharmProjects/result.txt'):
shutil.copyfile('C:/Users/PycharmProjects/result.txt', 'C:/Users/PycharmProjects/result_backup.txt')
shutil.move('C:/Users/PycharmProjects/test/test.txt', 'C:/Users/PycharmProjects/result.txt')
代碼中,首先使用os.path.exists()檢查目標路徑C:/Users/PycharmProjects/result.txt是否存在,如果存在則使用shutil.copyfile()函數備份該文件。然後再使用shutil.move()將源文件移動到目標路徑。
結論
在Python編程中,shutil.move()函數是一個非常有用的工具,可以幫助我們輕鬆地移動和重命名文件和文件夾。我們可以使用該函數的多個變體來實現不同的場景,但在使用時需要注意一些問題,如源文件是否存在、目標路徑是否已經存在同名的文件等等。掌握shutil.move()的使用方法,可以讓我們更好地處理文件操作,提高編程效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/191947.html