当我们需要将一个文件夹中的所有文件(包括文件夹)复制到另一个路径下时,可以利用递归实现该功能。
1. 实现文件复制函数
首先我们需要实现一个函数来完成文件的复制。该函数需要传入两个参数,即待复制文件的路径(包括文件夹)和目标路径。
import os
import shutil
def copy_files(source_dir, target_dir):
if not os.path.exists(target_dir):
os.makedirs(target_dir)
for file_name in os.listdir(source_dir):
source_file = os.path.join(source_dir, file_name)
target_file = os.path.join(target_dir, file_name)
if os.path.isdir(source_file):
copy_files(source_file, target_file)
else:
shutil.copy2(source_file, target_file)
在该函数内部,我们首先判断目标路径是否存在,如果不存在则创建目录。接着,使用os.listdir()
函数列出源路径下的所有文件和文件夹。如果当前遍历到的是一个文件夹,那么我们需要递归调用该函数。如果是一个文件,则使用shutil
模块中的copy2()
函数将文件复制到目标路径中。
2. 示例说明
下面我们使用两个示例来说明该函数如何使用。
示例一:复制单个文件
假设我们现在需要将一个名为file1.txt
的文件复制到/mnt/data
目录下。
首先我们需要调用copy_files()
函数,将源文件和目标路径传入,如下所示:
source_file = '/home/user1/file1.txt'
target_dir = '/mnt/data'
copy_files(source_file, target_dir)
上述代码将文件/home/user1/file1.txt
复制到/mnt/data/file1.txt
。
示例二:复制整个文件夹
假设我们现在需要将/home/user1/my_folder
文件夹中的所有文件(包括文件夹)复制到/mnt/data
目录下。
首先我们需要调用copy_files()
函数,将源文件夹和目标路径传入,如下所示:
source_dir = '/home/user1/my_folder'
target_dir = '/mnt/data/my_folder'
copy_files(source_dir, target_dir)
上述代码将整个/home/user1/my_folder
文件夹中的所有文件(包括文件夹)复制到/mnt/data/my_folder
目录下。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用递归实现文件的复制方法 - Python技术站