Python将一个文件夹下的文件复制到另一个文件夹中

Python将一个文件夹下的文件复制到另一个文件夹中

Python将一个文件夹下的文件复制到另一个文件夹中

在日常工作中,我们经常需要将一个文件夹下的文件复制到另一个文件夹中,这在Python中可以通过使用shutil模块来实现。shutil模块是Python标准库中的一个文件操作模块,提供了一系列对文件和文件夹进行操作的函数。

1. 复制单个文件

首先,我们来看如何将一个文件夹下的单个文件复制到另一个文件夹中。我们可以使用shutil.copy()函数来实现这个功能。

import shutil

# 源文件路径
src_file = 'source_folder/file.txt'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 复制文件
shutil.copy(src_file, dst_folder)

运行以上代码后,源文件夹中的file.txt文件将被复制到目标文件夹中。

2. 复制整个文件夹

接下来,我们来看如何将一个文件夹下的所有文件复制到另一个文件夹中。我们可以使用shutil.copytree()函数来实现这个功能。

import shutil

# 源文件夹路径
src_folder = 'source_folder/'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 复制文件夹
shutil.copytree(src_folder, dst_folder)

运行以上代码后,源文件夹中的所有文件将被复制到目标文件夹中。

3. 复制文件夹中的特定文件类型

有时候,我们只需要复制文件夹中的特定类型的文件,比如只复制所有的txt文件。我们可以使用os模块来遍历文件夹中的所有文件,然后根据文件类型进行复制。

import os
import shutil

# 源文件夹路径
src_folder = 'source_folder/'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 遍历源文件夹中的所有文件
for file in os.listdir(src_folder):
    if file.endswith('.txt'):
        src_file = os.path.join(src_folder, file)
        shutil.copy(src_file, dst_folder)

运行以上代码后,源文件夹中所有的txt文件将被复制到目标文件夹中。

4. 复制文件夹中的文件并保持文件结构

有时候,我们需要保持文件夹中的文件结构,将文件夹中的文件复制到目标文件夹中,并保持原有的文件夹结构。我们可以使用shutil.copytree()函数来实现这个功能。

import shutil

# 源文件夹路径
src_folder = 'source_folder/'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 复制文件夹并保持文件结构
shutil.copytree(src_folder, dst_folder)

运行以上代码后,源文件夹中的文件将被复制到目标文件夹中,并保持原有的文件夹结构。

5. 复制文件夹中的文件并重命名

有时候,我们需要将文件夹中的文件复制到目标文件夹中,并重命名文件。我们可以使用shutil.copy()函数来实现这个功能。

import shutil

# 源文件路径
src_file = 'source_folder/file.txt'
# 目标文件夹路径
dst_folder = 'destination_folder/'
# 目标文件名
dst_file = 'new_file.txt'

# 复制文件并重命名
shutil.copy(src_file, os.path.join(dst_folder, dst_file))

运行以上代码后,源文件夹中的file.txt文件将被复制到目标文件夹中,并重命名为new_file.txt。

6. 复制文件夹中的文件并修改文件权限

有时候,我们需要将文件夹中的文件复制到目标文件夹中,并修改文件的权限。我们可以使用shutil.copy()函数来实现这个功能。

import shutil

# 源文件路径
src_file = 'source_folder/file.txt'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 复制文件并修改权限
shutil.copy(src_file, dst_folder)
os.chmod(os.path.join(dst_folder, 'file.txt'), 0o777)

运行以上代码后,源文件夹中的file.txt文件将被复制到目标文件夹中,并修改文件权限为777。

7. 复制文件夹中的文件并保留元数据

有时候,我们需要将文件夹中的文件复制到目标文件夹中,并保留文件的元数据,比如文件的创建时间、修改时间等。我们可以使用shutil.copy2()函数来实现这个功能。

import shutil

# 源文件路径
src_file = 'source_folder/file.txt'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 复制文件并保留元数据
shutil.copy2(src_file, dst_folder)

运行以上代码后,源文件夹中的file.txt文件将被复制到目标文件夹中,并保留文件的元数据。

8. 复制文件夹中的文件并忽略特定文件

有时候,我们需要将文件夹中的文件复制到目标文件夹中,但是需要忽略特定的文件。我们可以使用shutil.copy()函数和os模块来实现这个功能。

import os
import shutil

# 源文件夹路径
src_folder = 'source_folder/'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 遍历源文件夹中的所有文件
for file in os.listdir(src_folder):
    if not file.startswith('ignore'):
        src_file = os.path.join(src_folder, file)
        shutil.copy(src_file, dst_folder)

运行以上代码后,源文件夹中除了以ignore开头的文件外,其他文件都将被复制到目标文件夹中。

9. 复制文件夹中的文件并压缩

有时候,我们需要将文件夹中的文件复制到目标文件夹中,并将文件压缩成zip格式。我们可以使用shutil.make_archive()函数来实现这个功能。

import shutil

# 源文件夹路径
src_folder = 'source_folder/'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 压缩文件夹
shutil.make_archive('archive', 'zip', src_folder)
shutil.move('archive.zip', dst_folder)

运行以上代码后,源文件夹中的所有文件将被压缩成zip格式,并复制到目标文件夹中。

10. 复制文件夹中的文件并加密

有时候,我们需要将文件夹中的文件复制到目标文件夹中,并对文件进行加密。我们可以使用pycryptodome库来实现文件加密。

from Crypto.Cipher import AES
import os

# 生成16字节的密钥
key = os.urandom(16)

# 加密函数
def encrypt_file(key, file_path):
    cipher = AES.new(key, AES.MODE_EAX)
    with open(file_path, 'rb') as f:
        data = f.read()
        ciphertext, tag = cipher.encrypt_and_digest(data)
    with open(file_path + '.enc', 'wb') as f:
        f.write(cipher.nonce)
        f.write(tag)
        f.write(ciphertext)

# 源文件路径
src_file = 'source_folder/file.txt'
# 目标文件夹路径
dst_folder = 'destination_folder/'

# 加密文件
encrypt_file(key, src_file)
shutil.move(src_file + '.enc', dst_folder)

运行以上代码后,源文件夹中的file.txt文件将被加密并复制到目标文件夹中。

通过以上示例代码,我们可以看到如何使用Python中的shutil模块来实现将一个文件夹下的文件复制到另一个文件夹中的功能。无论是复制单个文件、整个文件夹,还是对文件进行重命名、权限修改、元数据保留、忽略特定文件、压缩、加密等操作,shutil模块都提供了相应的函数来实现这些功能。在实际工作中,我们可以根据具体需求选择合适的函数来完成文件复制操作,提高工作效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程