You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以文件名作为键将CSV格式TXT文件转为字典并批量处理?

嘿,这个批量处理的需求我熟!我给你写个Python脚本就能搞定,不仅能处理单个allMaps.txt,整个文件夹里的同类TXT文件都能一次性处理完~

批量处理CSV格式TXT文件生成字典

核心思路

简单来说就是三步走:

  • 扫一遍目标文件夹里所有.txt文件
  • 对每个文件,把去掉后缀的文件名当字典的键,把文件里逗号分隔的内容拆成列表当对应的值
  • 最后把所有文件的结果整合进一个字典里

完整可运行代码

import os

def batch_process_txt_files(target_folder):
    result_dict = {}
    
    # 遍历文件夹里的所有文件
    for filename in os.listdir(target_folder):
        # 只处理后缀为.txt的文件
        if filename.lower().endswith('.txt'):
            # 提取不带后缀的文件名作为键(比如allMaps.txt -> allMaps)
            key_name = os.path.splitext(filename)[0]
            full_file_path = os.path.join(target_folder, filename)
            
            # 读取文件内容并处理
            with open(full_file_path, 'r', encoding='utf-8') as file:
                # 读取全部内容,去掉首尾的空格/换行,再按逗号分割
                raw_content = file.read().strip()
                value_list = raw_content.split(',')
                # 过滤掉空字符串(避免文件末尾有逗号或者空行导致的无效值)
                value_list = [item.strip() for item in value_list if item.strip()]
            
            result_dict[key_name] = value_list
    
    return result_dict

# ---------------------- 使用示例 ----------------------
# 把这里的路径换成你要处理的文件夹路径就行
your_folder_path = './your_files_folder'
final_result = batch_process_txt_files(your_folder_path)

# 打印结果看看效果
for key, values in final_result.items():
    print(f"键: {key},对应值列表: {values}")

代码细节说明

  • 安全提取文件名:用os.path.splitext()比手动切字符串靠谱多了,不管文件后缀是.txt还是.txt.bak,都能准确提取到不带后缀的文件名
  • 文件读取更安全:用with open()上下文管理器,不用手动关闭文件,能避免忘记关文件导致的资源泄漏问题
  • 处理脏数据:最后加了一步过滤空字符串的操作,要是文件里有多余的逗号或者空行,不会把空值塞进结果里
  • 编码兼容:默认用utf-8编码读取,如果你的文件是其他编码(比如gbk),把open()里的encoding参数改成对应的就行

进阶优化提示

如果你的文件是标准CSV格式(比如字段里带逗号,用引号包裹的情况,例如"apple,banana",orange),上面的简单分割会出错,这时候可以用Python内置的csv模块来处理,更规范:

import csv

# 替换代码里读取文件的部分
with open(full_file_path, 'r', encoding='utf-8') as file:
    csv_reader = csv.reader(file)
    value_list = []
    # 把每一行的内容合并到列表里(如果只需要第一行就去掉循环,取next(csv_reader))
    for row in csv_reader:
        value_list.extend([item.strip() for item in row if item.strip()])

这样就能正确处理带引号的逗号分隔字段啦!

内容的提问来源于stack exchange,提问作者Overtime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:50:34