python复制文件夹
在日常开发工作中,经常会遇到需要复制文件夹的需求。Python作为一门流行的编程语言,在处理文件和文件夹操作方面拥有强大的功能。在本文中,我们将详细介绍如何使用Python来复制文件夹。
1. 使用shutil模块复制文件夹
在Python中,我们可以使用shutil模块来实现文件和文件夹的操作。shutil模块提供了一系列高级的文件操作功能,包括复制、移动和删除文件等。下面我们将通过示例代码来演示如何使用shutil模块来复制文件夹。
import shutil
import os
# 定义一个函数用于复制文件夹
def copy_folder(src_folder, dest_folder):
try:
shutil.copytree(src_folder, dest_folder)
print(f"文件夹 {src_folder} 复制成功至 {dest_folder}")
except FileExistsError:
print(f"目标文件夹 {dest_folder} 已存在,无法复制")
except FileNotFoundError:
print(f"源文件夹 {src_folder} 不存在,无法复制")
# 指定源文件夹和目标文件夹路径
src_folder = "source_folder"
dest_folder = "destination_folder"
# 调用copy_folder函数复制文件夹
copy_folder(src_folder, dest_folder)
在上面的示例代码中,我们首先导入了shutil和os模块。然后定义了一个名为copy_folder
的函数,用来实现文件夹的复制操作。接着我们指定了源文件夹src_folder
和目标文件夹dest_folder
的路径,并调用copy_folder
函数来执行复制操作。如果源文件夹不存在或目标文件夹已存在,则会输出相应的提示信息。
2. 进阶:使用os.walk遍历文件夹
除了简单地复制文件夹外,有时候我们可能需要对文件夹内的所有文件和子文件夹进行遍历和处理。这时可以使用os.walk
函数来实现对文件夹的深度优先遍历。下面是一个示例代码,演示如何使用os.walk
函数来遍历文件夹并复制其中的所有文件和子文件夹。
import os
import shutil
# 定义函数用于复制文件夹
def copy_folder(src_folder, dest_folder):
for dirpath, dirnames, filenames in os.walk(src_folder):
for dirname in dirnames:
src_dir = os.path.join(dirpath, dirname)
dest_dir = os.path.join(dest_folder, os.path.relpath(src_dir, src_folder))
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
for filename in filenames:
src_file = os.path.join(dirpath, filename)
dest_file = os.path.join(dest_folder, os.path.relpath(src_file, src_folder))
shutil.copy2(src_file, dest_file)
print(f"文件夹 {src_folder} 复制成功至 {dest_folder}")
# 指定源文件夹和目标文件夹路径
src_folder = "source_folder"
dest_folder = "destination_folder"
# 调用copy_folder函数复制文件夹
copy_folder(src_folder, dest_folder)
在上面的示例代码中,我们使用os.walk
函数来遍历源文件夹中的所有文件和子文件夹。对于每个子文件夹,我们创建相应的目标文件夹并对其中的文件进行复制操作。这样可以保持原文件夹的文件结构,将其完整地复制到目标文件夹中。
3. 总结
通过本文的介绍,我们学习了如何使用Python中的shutil模块来复制文件夹。我们还进一步讨论了如何通过os.walk
函数来遍历文件夹和处理其中的文件。