python - 将每一行写入具有 csv 扩展名的文件
问题描述
我目前正在通过以下经典方式写入日志文件;编写在我的应用程序的其他地方填充和处理的值。
当我将文件扩展名更改为 .csv 时,它会在单元格之外输出,很乱。
old_stdout = sys.stdout
log_file = open("./logs/metrics.log","w") # I want this to be excel instead, when I change to csv it outputs outside of cells, messy
sys.stdout = log_file
# this to be one excel row (or record)
print(f"Total Records Found #{total_records} records") # this to be excel cell
print(f"Records Processing #{num_valid_records} records") # this to be excel cell
print(f"Records Deemed Invalid (skipped) #{num_invalid_records} records") # this to be excel cell
success_rate = num_valid_records / total_records * 100
print("Sucess Rate:") # this to be excel cell
print(success_rate) # this to be excel cell
然后它会像这样打印:(但我怎样才能将它映射到 excel 单元格?)
Total Records Found #351 records
Records Processing #350 records
Records Deemed Invalid (skipped) #1 records
Sucess Rate:
99.71509971509973
我想知道; 我如何将这些打印到一个excel文件中,作为一行打印到单元格中
解决方案
阅读文档。Python 以拥有包含详尽示例的出色文档而闻名。
from csv import DictWriter
with open("./logs/metrics.csv", "w", newline="") as f:
csv_writer = DictWriter(f, ['total', 'processed', 'skipped', 'success_rate'])
csv_writer.writeheader()
success_rate = num_valid_records / total_records * 100
csv_writer.writerow(dict(total=total_records,
processed=num_valid_records,
skipped=num_invalid_records,
success_rate=num_valid_records / total_records * 100))