这篇文章将讨论如何在 Python 中复制文件。
在 Python 中有几种方法可以复制文件。下面详细讨论最常见和最有效的方法:
1.使用 shutil.copy2()
功能
这 shutil
模块提供了几个高级函数来支持文件的复制和删除。您可以使用 copy2(src, dst)
复制文件的功能 src
到文件或目录 dst
.
1. 如果 dst
是一个文件名,内容和文件元数据 src
被复制。如果 dst
是现有文件,它将被 src
文件。
1 2 3 4 5 |
src = '/src/file.txt' dest = '/dest/log.txt' shutil.copy2(src, dest) |
2. 如果 dst
指定一个目录,我们将复制 src
文件到目录 dst
.如果目标位置中已存在同名文件,它将被覆盖。
1 2 3 4 5 |
src = '/src/file.txt' dest = '/dest/dir' shutil.copy2(src, dest) |
的主要优点 copy2()
是它可以接受目标目录路径并复制文件元数据。您还可以使用 copy()
功能等同于 copy2()
功能,但它无法保留元数据。
这 shutil
模块也有 copyfile(src, dst)
函数,它复制名为的文件的内容 src
到一个名为的目标文件 dst
.不复制元数据。但是,如果它已经存在,它会覆盖目标文件。
1 2 3 4 5 |
src = '/src/file.txt' dest = '/dest/log.txt' shutil.copyfile(src, dest) |
2.使用 Path.write_bytes()
功能
从 Python 3.4 开始,您可以使用 pathlib
模块,它提供表示面向对象的文件系统路径的类。它有 Path.write_bytes()
函数,它以字节模式打开指向的文件,向其中写入数据,然后关闭文件。此处不会发生文件元数据的交换。如果文件已存在于目标位置,这将覆盖该文件。
1 2 3 4 5 6 |
from pathlib import Path src = Path('/src/file.txt') dest = Path('/dest/log.txt') dest.write_bytes(src.read_bytes()) |
3.使用 open()
功能
最后,您可以以阅读模式打开源文件('r'
) 并将其内容写入以写入模式打开的目标文件 ('w'
)。写入模式在截断文件后打开文件进行写入,如果文件不存在则创建一个。
1 2 3 4 5 6 7 8 9 |
src = '/src/file.txt' dest = '/dest/log.txt' with open(src, 'r') as f: data = f.read() with open(dest, 'w') as f: f.write(data) |
这就是在 Python 中复制文件的全部内容。