Python 拷贝文件

Python 拷贝文件

Python 拷贝文件

1. 介绍

拷贝文件是计算机编程中常用的操作之一。Python 作为一门强大的编程语言,提供了多种方法来实现文件的拷贝,能够满足不同场景下的需求。

本文将详细介绍在 Python 中如何拷贝文件。首先会介绍 Python 自带的 shutil 模块,它提供了一种简单直接的文件拷贝方式。接着会介绍 os 模块中提供的 open 方法,并通过逐行读取和写入的方式来实现文件的拷贝。最后,会介绍 pathlib 模块,它提供了更加面向对象的操作方式。

2. 使用 shutil 模块拷贝文件

Python 的标准库中提供了一个 shutil 模块,它包含了很多用于文件和文件夹操作的函数。其中就包括了拷贝文件的函数 copycopy2

2.1. 使用 copy 函数

shutil.copy(src, dst, *, follow_symlinks=True) 函数用于将文件从源路径 src 复制到目标路径 dst。如果 dst 是一个文件夹,则会将 src 拷贝到该文件夹下并保持文件名不变。

以下是使用 copy 函数拷贝文件的示例代码:

import shutil

src = "source.txt"
dst = "destination.txt"

shutil.copy(src, dst)
print("文件拷贝成功")

上述代码中,我们将名为 source.txt 的文件拷贝到名为 destination.txt 的目标文件。

运行结果:

文件拷贝成功

2.2. 使用 copy2 函数

shutil.copy2(src, dst, *, follow_symlinks=True) 函数与 copy 函数类似,但会尽量保留源文件的元数据(如权限、时间戳等)。这在一些特殊场景下可能会有用。

以下是使用 copy2 函数拷贝文件的示例代码:

import shutil

src = "source.txt"
dst = "destination.txt"

shutil.copy2(src, dst)
print("文件拷贝成功")

运行结果:

文件拷贝成功

3. 使用 os 模块逐行读写拷贝文件

除了使用 shutil 模块,还可以使用 Python 的内置模块 os 来逐行读写文件,并实现文件的拷贝。

以下是使用 os 模块拷贝文件的示例代码:

import os

src = "source.txt"
dst = "destination.txt"

with open(src, 'r') as f_src, open(dst, 'w') as f_dst:
    for line in f_src:
        f_dst.write(line)

print("文件拷贝成功")

上述代码中,我们使用 open 函数打开源文件和目标文件,将源文件的内容逐行读取,并写入目标文件。

运行结果:

文件拷贝成功

4. 使用 pathlib 模块拷贝文件

pathlib 模块是 Python 3.4 引入的一个新模块,提供了一种更加面向对象的文件路径操作方式。

以下是使用 pathlib 模块拷贝文件的示例代码:

from pathlib import Path

src = Path("source.txt")
dst = Path("destination.txt")

with src.open('r') as f_src, dst.open('w') as f_dst:
    for line in f_src:
        f_dst.write(line)

print("文件拷贝成功")

上述代码中,我们使用 Path 类创建源文件和目标文件的路径对象,并分别使用 open 方法打开文件。

运行结果:

文件拷贝成功

5. 拷贝文件夹

除了拷贝单个文件外,有时还需要拷贝整个文件夹。shutil 模块也提供了相应的函数来实现文件夹的拷贝。

以下是使用 shutil 模块拷贝文件夹的示例代码:

import shutil

src_folder = "source_folder"
dst_folder = "destination_folder"

shutil.copytree(src_folder, dst_folder)
print("文件夹拷贝成功")

上述代码中,我们使用 copytree 函数将 source_folder 文件夹及其子文件夹和文件拷贝到 destination_folder 文件夹中。

运行结果:

文件夹拷贝成功

6. 总结

本文介绍了多种方法在 Python 中实现文件的拷贝。首先,我们使用了 shutil 模块的 copycopy2 函数,并演示了拷贝单个文件和整个文件夹的操作。接着,我们使用了 os 模块和 pathlib 模块,并演示了逐行读写文件的方式。

根据实际需求,我们可以选择适合的方式来拷贝文件。shutil 模块提供了更加简单的操作方式,而 os 模块和 pathlib 模块则提供了更加灵活和面向对象的操作方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程