如何以文件名作为键将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
相关产品推荐
相关产品推荐

