热搜词
发表于 前天 08:50 | 显示全部楼层 |阅读模式
使用豆包生成txt文档合并工具

提示词:
帮我生成一个txt文档合并工具,功能要求如下:
1.使用python语言;
2.将当前目录下的所有txt格式的文档合并成一个txt文档,并在每个文档内容之前插入分隔符和原文件名;
3.要能处理不同编码的txt文件,如utf8、ansi编码等。

‌依赖库‌:
pip install chardet

代码:
  1. import os
  2. import chardet


  3. def merge_txt_files():
  4.     # 定义分隔符
  5.     separator = "=" * 80
  6.     # 获取当前目录
  7.     current_directory = os.getcwd()
  8.     # 初始化一个空列表来存储所有 txt 文件的路径
  9.     txt_files = []
  10.     # 遍历当前目录下的所有文件
  11.     for filename in os.listdir(current_directory):
  12.         if filename.endswith('.txt'):
  13.             txt_files.append(os.path.join(current_directory, filename))
  14.     # 按文件名排序
  15.     txt_files.sort()
  16.     # 打开一个新的文件用于写入合并后的内容
  17.     with open('merged.txt', 'w', encoding='utf-8') as outfile:
  18.         for txt_file in txt_files:
  19.             # 获取文件名
  20.             base_name = os.path.basename(txt_file)
  21.             # 写入分隔符和文件名
  22.             outfile.write(f"{separator}\n")
  23.             outfile.write(f"文件名: {base_name}\n")
  24.             outfile.write(f"{separator}\n")
  25.             try:
  26.                 # 以二进制模式打开文件,检测编码
  27.                 with open(txt_file, 'rb') as raw_file:
  28.                     raw_data = raw_file.read()
  29.                     result = chardet.detect(raw_data)
  30.                     encoding = result['encoding']
  31.                 # 以检测到的编码打开文件并读取内容
  32.                 with open(txt_file, 'r', encoding=encoding) as infile:
  33.                     content = infile.read()
  34.                     # 写入当前文件的内容
  35.                     outfile.write(content)
  36.                     # 写入换行符以分隔不同文件的内容
  37.                     outfile.write('\n')
  38.             except Exception as e:
  39.                 print(f"读取文件 {txt_file} 时出错: {e}")


  40. if __name__ == "__main__":
  41.     merge_txt_files()
  42.    
复制代码



全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2025-4-20 12:03 , Processed in 0.170039 second(s), 24 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2025 Discuz! Team