📜  Python| shutil.copy() 方法

📅  最后修改于: 2022-05-13 01:55:29.058000             🧑  作者: Mango

Python| shutil.copy() 方法

Python3
# 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.")


Python3
# 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)


Python3
# 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)


Python3
# 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, destination)


Python3
# 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.")


Python中的Shutil 模块提供了许多对文件和文件集合进行高级操作的功能。它属于 Python 的标准实用程序模块。该模块有助于自动复制和删除文件和目录的过程。
Python中的shutil.copy()方法用于将文件的内容复制到目标文件或目录。它还保留了文件的权限模式,但不保留文件的其他元数据,例如文件的创建和修改时间。
必须表示文件,但目标可以是文件或目录。如果目标是目录,则文件将使用源中的基本文件名复制到目标。此外,目的地必须是可写的。如果目标是一个文件并且已经存在,那么它将被文件替换,否则将创建一个新文件。

代码 #1:使用 shutil.copy() 方法将文件从源复制到目标

Python3

# 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:如果目标是目录

Python3

# 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() 方法时可能出现的错误

Python3

# 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, destination)
输出:
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() 方法时处理错误

Python3

# 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