Python拷贝文件

在Python中,我们经常需要拷贝文件或者目录。拷贝文件是将一个文件的内容复制到另一个文件中,而拷贝目录则是将一个目录下的所有文件和子目录复制到另一个目录中。在本文中,我们将详细讨论如何在Python中拷贝文件。
使用shutil模块
Python的shutil模块提供了一组用于文件操作的高阶工具。其中的shutil.copy()函数可以用来拷贝文件。下面是一个简单的示例代码:
import shutil
# 拷贝文件
shutil.copy('source.txt', 'destination.txt')
上面的代码将源文件source.txt的内容拷贝到目标文件destination.txt中。如果目标文件已存在,则会覆盖原有内容。
拷贝文件夹
如果要拷贝整个文件夹,可以使用shutil.copytree()函数。示例代码如下:
import shutil
# 拷贝文件夹
shutil.copytree('source_directory', 'destination_directory')
上面的代码将源文件夹source_directory的所有内容(包括文件和子文件夹)拷贝到目标文件夹destination_directory中。如果目标文件夹已存在,则会抛出异常。可以使用shutil.rmtree()函数先删除目标文件夹,再进行拷贝。
拷贝文件的权限和元数据
除了拷贝文件内容外,有时还需要拷贝文件的权限和元数据(如创建时间、修改时间等)。这可以通过shutil.copy2()函数实现,示例代码如下:
import shutil
# 拷贝文件和元数据
shutil.copy2('source.txt', 'destination.txt')
上面的代码将源文件source.txt的内容、权限和元数据拷贝到目标文件destination.txt中。
使用os模块
除了shutil模块外,还可以使用os模块来拷贝文件。os模块提供了os.system()函数可以执行系统命令,例如cp命令用于拷贝文件。示例代码如下:
import os
# 拷贝文件
os.system('cp source.txt destination.txt')
上面的代码将源文件source.txt拷贝到目标文件destination.txt中。需要注意的是,os.system()函数执行系统命令时,会在命令行中显示执行过程,适合简单的文件拷贝操作。
拷贝大文件
在处理大文件时,最好使用shutil.copyfileobj()函数。示例代码如下:
import shutil
# 拷贝大文件
with open('large_file.txt', 'rb') as fsrc:
with open('destination_file.txt', 'wb') as fdst:
shutil.copyfileobj(fsrc, fdst)
上面的代码以二进制模式打开源文件和目标文件,并使用shutil.copyfileobj()函数逐块拷贝数据,适合拷贝大文件。
拷贝文件后返回相关信息
有时需要获取文件拷贝后的相关信息,例如目标文件的大小、创建时间等。可以使用shutil.copystat()函数来拷贝文件的状态信息。示例代码如下:
import shutil
# 拷贝文件并返回相关信息
info = shutil.copystat('source.txt', 'destination.txt')
print(info)
上面的代码将源文件source.txt的状态信息拷贝到目标文件destination.txt中,并返回相关信息。这些信息可以用于验证文件拷贝是否成功。
总之,Python提供了多种方法来拷贝文件和目录,开发者可以根据具体需求选择合适的方法。在实际开发中,建议使用shutil模块提供的函数来进行文件拷贝,因为其功能更为强大、灵活,并且处理异常情况更加友好。
极客教程