Python中的Shutil模塊提供了許多對文件和文件集合進行高級操作的函數。它屬於Python的標準實用程序模塊。此模塊有助於自動執行文件和目錄的複製和刪除過程。
shutil.copy()
Python中的方法用於將源文件的內容複製到目標文件或目錄。它還會保留文件的權限模式,但不會保留文件的其他元數據(例如文件的創建和修改時間)。源必須代表文件,但目標可以是文件或目錄。如果目標是目錄,則文件將使用源中的基本文件名複製到目標中。另外,目的地必須是可寫的。如果目標是文件並且已經存在,則將其替換為源文件,否則將創建一個新文件。
用法: shutil.copy(source, destination, *, follow_symlinks = True)
參數:
source:代表源文件路徑的字符串。
destination:代表目標文件或目錄路徑的字符串。
follow_symlinks(可選):此參數的默認值為True。如果為False,並且source表示符號鏈接,則目標將創建為符號鏈接。
Note:參數列表中的“ *”表示以下所有參數(此處為“ follow_symlinks”)僅是關鍵字參數,可以使用其名稱(而不是位置參數)來提供。
返回類型:此方法返回一個表示新創建文件路徑的字符串。
代碼1:使用shutil.copy()方法將文件從源複製到目標
# Python program to explain shutil.copy() method
# importing os module
import os
# importing shutil module
import shutil
# path
path = '/home/User/Documents'
# List files and directories
# in '/home/User/Documents'
print("Before copying file:")
print(os.listdir(path))
# Source path
source = "/home/User/Documents/file.txt"
# Print file permission
# of the source
perm = os.stat(source).st_mode
print("File Permission mode:", perm, "\n")
# Destination path
destination = "/home/User/Documents/file(copy).txt"
# Copy the content of
# source to destination
dest = shutil.copy(source, destination)
# List files and directories
# in "/home / User / Documents"
print("After copying file:")
print(os.listdir(path))
# Print file permission
# of the destination
perm = os.stat(destination).st_mode
print("File Permission mode:", perm)
# Print path of newly
# created file
print("Destination path:", dest)
輸出:
Before copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'copy.cpp'] File permission mode: 33188 After copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'file(copy).txt', 'copy.cpp'] File permission mode: 33188 Destination path: /home/User/Documents/file(copy).txt
代碼2:如果目的地是目錄
# Python program to explain shutil.copy() method
# importing os module
import os
# importing shutil module
import shutil
# Source path
source = "/home/User/Documents/file.txt"
# Destination path
destination = "/home/User/Desktop/"
# Copy the content of
# source to destination
dest = shutil.copy(source, destination)
# List files and directories
# in "/home / User / Desktop"
print("After copying file:")
print(os.listdir(destination))
# Print path of newly
# created file
print("Destination path:", dest)
輸出:
After copying file: ['input.txt', 'GeeksForGeeks', 'output.txt', 'file.txt', 'web.py', 'tree.cpp'] Destination path: /home/User/Desktop/file.txt
代碼3:使用shutil.copy()方法時可能出現的錯誤
# Python program to explain shutil.copy() method
# importing shutil module
import shutil
# If the source and destination
# represents the same file
# 'SameFileError' exception
# will be raised
# If the destination is
# not writable
# 'PermissionError' exception
# will be raised
# Source path
source = "/home/User/Documents/file.txt"
# Destination path
destination = "/home/User/Documents/file.txt"
# Copy the content of
# source to destination
shutil.copy(source, destintion)
輸出:
Traceback (most recent call last): File "try.py", line 26, in dest = shutil.copy(source, destination) File "/usr/lib/python3.6/shutil.py", line 241, in copy copyfile(src, dst, follow_symlinks=follow_symlinks) File "/usr/lib/python3.6/shutil.py", line 104, in copyfile raise SameFileError("{!r} and {!r} are the same file".format(src, dst)) shutil.SameFileError: '/home/User/Desktop/file.txt' and '/home/User/Desktop/file.txt' are the same file
代碼4:使用Shutil.copy()方法處理錯誤
# Python program to explain shutil.copy() method
# importing shutil module
import shutil
# Source path
source = "/home/User/Documents/file.txt"
# Destination path
destination = "/home/User/Documents/file.txt"
# Copy the content of
# source to destination
try:
shutil.copy(source, destination)
print("File copied successfully.")
# If source and destination are same
except shutil.SameFileError:
print("Source and destination represents the same file.")
# If there is any permission issue
except PermissionError:
print("Permission denied.")
# For other errors
except:
print("Error occurred while copying file.")
輸出:
Source and destination represents the same file.
參考: https://docs.python.org/3/library/shutil.html
相關用法
- Python set()用法及代碼示例
- Python os.dup()用法及代碼示例
- Python next()用法及代碼示例
- Python os.abort()用法及代碼示例
- Python os.sched_get_priority_max()用法及代碼示例
- Python cmath.log()用法及代碼示例
- Python os.sched_get_priority_min()用法及代碼示例
- Python os.sched_setaffinity()用法及代碼示例
- Python os.sched_getaffinity()用法及代碼示例
- Python shutil.which()用法及代碼示例
- Python os.WEXITSTATUS()用法及代碼示例
- Python os.rmdir()用法及代碼示例
- Python os.makedirs()用法及代碼示例
- Python os.removedirs()用法及代碼示例
注:本文由純淨天空篩選整理自ihritik大神的英文原創作品 Python | shutil.copy() method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。