Linux环境下如何用Python读取文本中文件夹并复制到目标目录
Linux下用Python批量复制文件夹的解决方案
你遇到的问题是shutil.copyfile仅支持单个文件复制,要复制包含全部内容的文件夹,得用shutil.copytree()方法,以下是完整实现方案:
步骤说明
- 先创建目标目录
duplicate-folder(如果不存在) - 读取存储文件夹名的文本文件,过滤空行
- 逐个调用
shutil.copytree()复制文件夹到目标目录
完整代码示例
import os import shutil # 定义目标目录和文件夹列表文件路径 target_dir = "duplicate-folder" folders_list_path = "folders.txt" # 创建目标目录,exist_ok=True避免目录已存在时报错 os.makedirs(target_dir, exist_ok=True) # 读取文件夹列表,去除空行和首尾空白字符 with open(folders_list_path, "r") as file: folder_names = [line.strip() for line in file if line.strip()] # 批量复制文件夹 for folder in folder_names: # 拼接目标路径:duplicate-folder/原文件夹名 dest_folder = os.path.join(target_dir, os.path.basename(folder)) try: # Python 3.8+支持dirs_exist_ok=True,可覆盖已存在的目标文件夹 shutil.copytree(folder, dest_folder, dirs_exist_ok=True) print(f"已复制: {folder} → {dest_folder}") except Exception as e: print(f"复制失败 {folder}: {str(e)}")
注意事项
- 如果文本文件中的文件夹是相对路径,确保脚本运行的工作目录正确,或者直接使用绝对路径
dirs_exist_ok=True参数仅在Python 3.8及以上版本可用,若用低版本,可先删除已存在的目标文件夹再复制(需谨慎操作)shutil.copytree()会完整复制文件夹的所有内容,包括子目录、文件权限和元数据
内容的提问来源于stack exchange,提问作者Megan Darcy
相关产品推荐
相关产品推荐

