如何使用Python将文件从一个文件夹复制到另一个文件夹?
在日常工作或生活中,我们常常需要将一个文件夹中的文件复制到另一个文件夹中,这样可以方便地备份数据或传输数据。通过使用Python的shutil模块,我们可以轻松地实现文件夹复制功能。
更多Python文章,请阅读:Python 教程
shutil模块
shutil模块是Python自带的一个文件操作模块,提供了很多文件和文件夹的操作函数。其中包括复制、移动、重命名、删除等功能。
我们可以使用shutil的copytree()函数来实现文件夹复制功能。该函数可以将一个文件夹中的所有文件和子文件夹复制到一个新的目标文件夹中。
示例代码
下面是一个简单的Python程序示例,演示了如何使用shutil模块将一个文件夹中的文件复制到另一个文件夹中。
import shutil
# 源文件夹路径
src_folder = "/Users/user/Desktop/src_folder/"
# 目标文件夹路径
dst_folder = "/Users/user/Desktop/dst_folder/"
# 复制文件夹
shutil.copytree(src_folder, dst_folder)
在上述代码中,我们首先导入了shutil模块。然后定义了源文件夹路径和目标文件夹路径。最后通过调用shutil.copytree()函数来将源文件夹中的所有文件和子文件夹复制到目标文件夹中。
需要注意的是,如果目标文件夹已经存在了,那么该程序将会抛出异常。如果需要覆盖目标文件夹,可以使用shutil.rmtree()函数删除目标文件夹后再进行复制操作。
import shutil
# 源文件夹路径
src_folder = "/Users/user/Desktop/src_folder/"
# 目标文件夹路径
dst_folder = "/Users/user/Desktop/dst_folder/"
# 如果目标文件夹已经存在,先删除
shutil.rmtree(dst_folder)
# 复制文件夹
shutil.copytree(src_folder, dst_folder)
文件夹中的过滤器
在实际应用中,我们可能只需要复制某些类型的文件或者排除某些类型的文件。可以通过添加一个自定义的过滤器函数来实现这个功能。
自定义的过滤器函数应该接受一个参数,即正在处理的目录中的文件名。函数应该返回True或False,表示该文件是否应该被复制。下面是一个示例过滤器函数,只复制后缀名为”.txt”的文件。
import shutil
import os
# 自定义过滤器函数
def filter_txt_files(file):
return file.endswith('.txt')
# 源文件夹路径
src_folder = "/Users/user/Desktop/src_folder/"
# 目标文件夹路径
dst_folder = "/Users/user/Desktop/dst_folder/"
# 复制文件夹并过滤
shutil.copytree(src_folder, dst_folder, ignore=shutil.ignore_patterns('*', '*.txt'))
# 移动符合条件的文件
for root, dirs, files in os.walk(src_folder):
for file in files:
if filter_txt_files(file):
cur_file = os.path.join(root, file)
new_path = cur_file.replace(src_folder, dst_folder)
shutil.move(cur_file, new_path)
在上述代码中,我们通过自定义的filter_txt_files()函数来实现只复制”.txt”文件的功能。首先使用shutil.copytree()函数复制文件夹,忽略所有文件和以”.txt”结尾的文件。然后再使用os.walk()函数遍历原始文件夹中的所有文件,并使用filter_txt_files()函数过滤出符合条件的文件。最后通过shutil.move()函数移动符合条件的文件,将其从源文件夹复制到目标文件夹中。
结论
通过使用Python的shutil模块,我们可以轻松地实现文件夹复制功能,并通过添加自定义的过滤器函数来对复制的文件进行筛选和过滤,从而提高程序的适用性和效率。同时也可以进一步拓展该模块的功能,实现其他文件操作操作,比如移动、重命名、删除等操作。