场景 假设我们有一个项目文件夹 documents
,其中包含了多个子文件夹,每个子文件夹中都存放着我们需要合并的文本文件。我们想要将这些文本文件合并为一个单独的文件,以便于后续的查阅和分析。
功能
自动合并文本文件: 该工具能够自动合并指定文件夹中的所有Markdown(.md)和txt格式的文本文件,无需手动逐个文件进行合并操作。
自动排序: 在合并过程中,工具会按照文本文件的创建时间对其进行排序,以确保合并后的内容顺序正确,避免错乱。
输出文件保存: 合并后的文本内容将保存到一个输出文件中,方便查阅和使用。
示例
准备文件夹: 在您的计算机上创建一个名为 documents
的文件夹,然后在其中创建多个子文件夹,每个子文件夹中存放着需要合并的文本文件。
1 2 3 4 5 6 7 8 documents/ ├── folder1/ │ ├── report1.md │ └── notes1.txt ├── folder2/ │ ├── report2.md │ └── notes2.txt └── merge_text_files.py
运行脚本: 打开命令行界面(Command Prompt或Terminal),导航到包含 merge_text_files.py
脚本文件的目录。
执行合并操作: 在命令行中运行以下命令:
1 python merge_text_files.py
查看结果: 脚本会开始合并文本文件,并在完成后显示合并结果的信息。合并后的结果将保存在与每个子文件夹同名的输出文件中,例如 folder1.txt
和 folder2.txt
。
代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 import osdef get_sorted_text_files (folder_path ): """ 获取指定文件夹中的所有文本文件(包括Markdown和txt文件),并按照创建时间排序。 """ text_files = [] try : for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith(".md" ) or file.endswith(".txt" ): file_path = os.path.join(root, file) file_stat = os.stat(file_path) text_files.append((file_path, file_stat.st_mtime)) text_files.sort(key=lambda x: x[1 ]) except FileNotFoundError: print ("错误: 指定的文件夹路径不存在,请检查路径是否正确。" ) except PermissionError: print ("错误: 无权限访问指定的文件夹,请检查文件夹权限。" ) except Exception as e: print (f"错误: 获取文本文件时发生错误: {str (e)} " ) return text_filesdef merge_text_files_to_output (folder_path, output_file ): """ 合并指定文件夹中的所有文本文件,并将结果保存到输出文件中。 """ try : text_files = get_sorted_text_files(folder_path) with open (output_file, 'w' , en编程案例='utf-8' ) as output: for text_file, _ in text_files: with open (text_file, 'r' , en编程案例='utf-8' ) as f: output.write(f.read()) output.write('\n\n' ) print (f"合并完成,合并后的文件保存为: {output_file} " )