Python中如何使用函数复制文件
发布时间:2023-06-15 13:23:12
使用Python编程语言可以很容易地实现复制文件的功能,下面介绍使用函数复制文件的方法。先介绍两种基本的复制文件的方法。
一、使用shutil库
Python的标准库“shutil”提供了非常方便的复制文件功能,具体代码如下:
import shutil # 指定源文件路径和目标文件路径 src_file = './file1.txt' dst_file = './file2.txt' # 复制文件 shutil.copy(src_file, dst_file)
其中,“shutil.copy()”函数用于将源文件复制到指定的目标文件,如果文件已经存在,则会覆盖新的内容。
二、使用fileinput库
Python的标准库“fileinput”提供了另一种复制文件的方式,具体代码如下:
import fileinput
# 指定源文件路径和目标文件路径
src_file = './file1.txt'
dst_file = './file2.txt'
# 打开源文件和目标文件
with fileinput.input(src_file) as src, open(dst_file, 'w') as dst:
# 从源文件中读取内容并写入到目标文件中
for line in src:
dst.write(line)
其中,“fileinput.input()”函数用于打开源文件并返回一个文件对象,通过“with”语句管理上下文。在上下文管理器内部,遍历源文件中的每一行并写入到目标文件中。
通过以上两种方法可以完成文件的复制操作,但是在实际应用中,我们可能需要支持更多的功能,比如文件不存在时创建文件、支持目录复制等等。这时我们可以自己定义一个复制文件的函数来实现更多功能的支持。
三、自定义复制文件函数
下面是一个自定义复制文件函数的实现,支持以下功能:
1、如果目标文件所在的目录不存在,则自动创建目录。
2、如果目标文件已经存在,则提示用户是否覆盖文件。
3、如果复制的是一个目录,则会递归复制整个目录。
import os
import shutil
def copy_file(src, dst):
"""
复制文件或目录
:param src: 源文件或目录
:param dst: 目标文件或目录
"""
# 如果源文件或目录不存在,则提示错误
if not os.path.exists(src):
print('Error: source file or directory does not exist.')
return
# 如果目标文件所在目录不存在,则创建目录
if not os.path.exists(os.path.dirname(dst)):
os.makedirs(os.path.dirname(dst))
# 如果目标文件已经存在,则提示用户是否覆盖
if os.path.exists(dst):
choice = input('Target file already exists. Overwrite it? (y/n) ')
if choice.lower() != 'y':
return
# 如果源文件是目录,则调用复制目录的函数
if os.path.isdir(src):
copy_dir(src, dst)
# 如果源文件是文件,则调用shutil.copy()函数复制文件
else:
shutil.copy(src, dst)
print('Copy file successfully.')
def copy_dir(src, dst):
"""
复制目录
:param src: 源目录
:param dst: 目标目录
"""
# 获取源目录中的所有文件和目录
files = os.listdir(src)
for file in files:
# 获取源文件或目录的全路径和目标文件或目录的全路径
src_file = os.path.join(src, file)
dst_file = os.path.join(dst, file)
# 如果源文件或目录是目录,则递归复制该目录
if os.path.isdir(src_file):
copy_dir(src_file, dst_file)
# 如果源文件或目录是文件,则调用shutil.copy()函数复制文件
else:
shutil.copy(src_file, dst_file)
print('Copy directory successfully.')
调用该函数进行文件复制时,只需指定源文件或目录和目标文件或目录即可:
# 复制文件
copy_file('./file1.txt', './file2.txt')
# 复制目录
copy_file('./dir1', './dir2')
通过自定义函数实现文件复制,不仅支持更多的功能,而且可以提高代码复用率,方便后期维护。如果你在Python程序中需要复制文件,可以选择任意一种方法来实现。
