我想在一个循环中输出一些结果到一个CSV文件。想法是一行一行地写,然后在一个新的循环中输出结果到另一列。这似乎是一个基本的问题,但我不能解决它,只输出我的结果行下一行。我的代码如下,第一行占用一个单元格,其余行占用三个单元格在这种情况下。谁能告诉我正确的方向吗?
f2 = open("output.csv","w", newline='')
writer=csv.writer(f2)
for i in range(len(BeamNum)):
writer.writerow([BeamNum[i]])
writer.writerow(["time(s)", "Pos", "Max VM stress (Pa)"])
for ii in range(NumPrimary.value):
St7API.St7GetResultCaseTime(1,ii+1,cTime)
St7API.St7GetBeamResultEndPos(1, St7API.rtBeamAllStress, St7API.stBeamGlobal,
BeamNum[i], ii+1, NumCol, BeamRes)
writer.writerow([cTime.value, 'End1', BeamRes[19]])
writer.writerow([cTime.value, 'End2', BeamRes[41]])
2条答案
按热度按时间58wvjzkj1#
像这样编写CSV有点复杂,字节被写入文件,添加另一列需要 * 插入 * 字节,这通常需要保存整个新文件。
你应该做的是创建元组或列表来表示结果行,然后一个一个地写,因为你的代码片段不能执行,所以让我来演示一下:
或者将
for
循环替换为cvs.Writer.writerows()
调用:yh2wf1be2#