这是一个包含多个值的大数据库,我有一个脚本,该脚本逐行读取并用数据创建新行以导出到CSV文件。 将新行传递到内部创建CSV文件的函数中,然后尝试编写新行,结果不完全是我所需要的。
我尝试了几种方法,并在论坛上检查了其他问题,但仍然发现输出有所不同,但未达到预期。 我尝试了这些:
1-
with open(csv_file, 'wb') as csvfile:
或with open(csv_file, 'ab') as csvfile:
结果:TypeError: a bytes-like object is required, not 'str'
2-
with open(csv_file, 'a') as csvfile:
个结果
IMSI,MSISDN,
VAL01,VAL02
IMSI,MSISDN,
VAL03,VAL04
IMSI,MSISDN,
VAL05,VAL06
IMSI,MSISDN,
VAL07,VAL08
3-
with open(csv_file, 'w') as csvfile:
IMSI,MSISDN,
VAL07,VAL08
结果3是文件被覆盖的逻辑,它不将下一行与后续值附加到下一行,而使该行保持在新行之前
如果with
语句与writer.writerow(val)
分开,我会打乱它并返回ValueError: I/O operation on closed file.
新行传递的功能是
def escribir(val):
print(type(val))
with open(csv_file, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
writer.writerow(val)
我检查了通过值的类型,并且可以在CSV上正确写入
我希望将传递给函数的每个不同的新行写入CSV文件中,而无需重复标题,也不会在行之间打断行。
答案 0 :(得分:0)
您是否为同一输出csv文件多次调用def escribir(val)
?
如果是这种情况,请从此函数中删除writer.writeheader()
。
编写一个单独的函数/代码段,以仅写入一次标题信息。