如何使用Python将PrettyTable输出正确转换为CSV文件
问题根因
当前代码生成非标准CSV的核心原因有两点:
- 调用
data.get_string()获取的是PrettyTable专为终端打印设计的带边框排版字符串,本身就不是CSV结构化格式,写入文件后自然和终端打印效果完全一致 - 代码存在语法问题:文件打开模式
w未加字符串引号,且with上下文管理器会自动完成文件关闭操作,不需要手动调用f.close
修复方案
PrettyTable内置了get_csv_string()方法,可以直接输出符合RFC标准的CSV格式字符串,直接写入文件即可得到规范的CSV文件,适配AWS Lambda的/tmp可写目录要求。
修正后代码
import os import json from prettytable import PrettyTable data = PrettyTable(["Col1", "Col2", "Col3"]) data.add_row(["test1", "test2", "test3"]) data.add_row(["test4", "test5", "test6"]) data.add_row(["test7", "test8", "test9"]) print(data) # 获取标准CSV格式内容 csv_content = data.get_csv_string() # 修正文件打开模式的语法问题,移除冗余的手动关闭文件逻辑 with open('/tmp/test.csv', 'w') as f: f.write(csv_content)
可选配置
如果需要自定义CSV格式,可以在get_csv_string()中传入对应参数:
- 自定义分隔符:传入
delimiter参数,比如delimiter=';'使用分号作为字段分隔符 - 关闭表头输出:传入
header=False即可不写入表头行 - 自定义字段引用规则:传入
quoting参数配置csv模块对应的引用规则
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

