求助:批量将TXT文件内容复制到其他文件的Python实现方案
嘿,我懂那种卡壳好久找不到思路的感觉——咱们来把这个批量处理TXT文件内容的问题搞定!
解决方案:批量复制TXT文件内容到目标文件
先基于你给出的代码片段,针对两种最常见的需求场景补全并优化代码:
场景1:把所有TXT文件内容合并到一个统一目标文件
如果你的需求是将FOLDERS目录下所有子文件夹里的TXT内容,全部汇总到一个文件里,完整代码如下:
import os rootdir = 'FOLDERS' # 你的根文件夹路径 target_file = 'combined_all.txt' # 最终合并的目标文件 # 先清空目标文件(如果需要覆盖已有内容的话) with open(target_file, 'w', encoding='utf-8') as f: pass # 递归遍历所有子目录与文件 for subdir, dirs, files in os.walk(rootdir): for file in files: # 只处理TXT格式文件 if file.endswith('.txt'): source_path = os.path.join(subdir, file) print(f"正在处理:{source_path}") # 读取源文件内容 with open(source_path, 'r', encoding='utf-8') as f_src: content = f_src.read() # 追加写入目标文件,可添加分隔符区分不同文件内容 with open(target_file, 'a', encoding='utf-8') as f_target: f_target.write(f"=== 来自文件:{source_path} ===\n") f_target.write(content) f_target.write("\n\n") # 用空行分隔不同文件内容
关键细节说明:
os.walk(rootdir):会递归遍历根目录下的所有子文件夹和文件,不用手动处理多层目录- 指定
encoding='utf-8':避免中文或特殊字符出现乱码问题,如果你的TXT是其他编码(比如gbk),替换成对应编码即可 'a'模式写入:会在目标文件末尾追加内容,不会覆盖原有内容;如果需要每次运行都清空重写,第一次打开用'w'模式即可
场景2:将每个TXT文件内容复制到对应目标文件
如果你的需求是一对一复制(比如每个源TXT对应一个同名目标TXT,或按目录结构复制),可以用这段代码:
import os rootdir = 'FOLDERS' target_root = 'TARGET_FOLDERS' # 目标文件的根目录 # 确保目标根目录存在,不存在则自动创建 os.makedirs(target_root, exist_ok=True) for subdir, dirs, files in os.walk(rootdir): for file in files: if file.endswith('.txt'): source_path = os.path.join(subdir, file) # 保留源文件的目录结构,在目标目录中创建对应路径 relative_path = os.path.relpath(source_path, rootdir) target_path = os.path.join(target_root, relative_path) # 创建目标文件所在的子目录(如果不存在) os.makedirs(os.path.dirname(target_path), exist_ok=True) # 复制内容 with open(source_path, 'r', encoding='utf-8') as f_src: content = f_src.read() with open(target_path, 'w', encoding='utf-8') as f_target: f_target.write(content) print(f"已复制:{source_path} → {target_path}")
额外提示:
- 如果处理超大TXT文件,建议用逐行读写的方式(
for line in f_src: f_target.write(line)),避免一次性读取大文件占用过多内存 - 若要避免覆盖已存在的目标文件,可以在写入前添加
if not os.path.exists(target_path)的判断
内容的提问来源于stack exchange,提问作者Maciej Czapiewski
相关产品推荐
相关产品推荐

