当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python shutil.copy()用法及代码示例


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



相关用法


注:本文由纯净天空筛选整理自ihritik大神的英文原创作品 Python | shutil.copy() method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。