【发布时间】:2022-01-29 04:50:09
【问题描述】:
我目前有正在写入 csv 文件的代码,但是,它不断替换文件的第一行并覆盖它而不是写入它。
注意:我在 main() 内的 for 循环中有这个函数。
def write_csv_report(filename, region, data, current, server1, server2=False):
if not os.path.exists(os.path.dirname(filename)):
try:
dir = os.makedirs(os.path.dirname(filename))
header = ['region','old_dns_server', 'proposed_dns_server1', 'proposed_dns_server2']
data = [region, current, server1, server2]
with open(filename, 'a') as file:
writer = csv.writer(file)
writer.writerow(header)
writer.writerow(data)
except OSError as exc:
if exc.errno != errno.EEXIST:
raise
当我在脚本中运行此函数时,它会写入文件但只添加一个条目。
有什么建议或解决方案可以让我添加多个条目吗?我查看了其他圣人问题并在 Google 上进行了搜索,但看起来我已经完成了实现此结果所需的必要更改,但不确定我缺少什么。
【问题讨论】:
-
是什么让您认为数据正在被覆盖?您以附加模式打开文件。问题似乎是您的 if 条件-在创建文件一次后它永远不会进入(只有 1 行,因为您的代码一次插入一个)。您可以通过在
try块内放置打印语句来检查 -
你的代码结构不好。您不应该每次调用都打开/写入标题/写入一行/关闭。你最终会得到多个标题,这将是非常低效的
标签: python python-3.x dataframe csv read.csv