如何将Python运行结果输出为CSV文件?(与本地实现效果一致)
将Python运行结果输出为CSV文件的实现方案
要把原本通过print输出的内容保存为CSV文件,最稳妥的方式是用Python内置的csv模块,它能自动处理CSV格式的细节(比如字段含逗号、引号的情况),同时保证输出格式和你本地打印的效果一致。
修改后的代码示例
import csv def data(): # 打开CSV文件,指定写入模式、编码和换行符 with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file: # 创建CSV写入对象,设置分隔符为", "(和你的示例输出格式匹配) writer = csv.writer(csv_file, delimiter=', ') for result_by_time in results: for group in result_by_time['Groups']: amount = group['Metrics']['UnblendedCost']['Amount'] resource_type = 'Amazon Relational Database Service' # 整理当前行的所有字段 row_content = [ result_by_time['TimePeriod']['Start'], ', '.join(group['Keys']).replace("example$", "").replace("Name$", ""), amount, resource_type ] # 写入一行数据到CSV文件 writer.writerow(row_content)
关键说明
- 用
with语句管理文件,自动处理文件的打开和关闭,避免资源泄漏。 newline=''参数可防止Windows系统下写入CSV时出现多余空行。delimiter=', '确保字段之间用逗号加空格分隔,和你提供的示例输出格式完全一致。- 把原本
print的各个字段整理成列表,通过writerow()写入,替代手动拼接字符串的方式,更可靠。
手动写入方案(仅适用于简单场景)
如果不想用csv模块,也可以直接打开文件写入,但要注意字段不能包含逗号、引号等特殊字符:
def data(): with open('output.csv', 'w', encoding='utf-8') as f: for result_by_time in results: for group in result_by_time['Groups']: amount = group['Metrics']['UnblendedCost']['Amount'] resource_type = 'Amazon Relational Database Service' line = f"{result_by_time['TimePeriod']['Start']}, {', '.join(group['Keys']).replace('example$', '').replace('Name$', '')}, {amount}, {resource_type}\n" f.write(line)
内容的提问来源于stack exchange,提问作者Ashif Shaikh
相关产品推荐
相关产品推荐

