【发布时间】:2021-02-28 16:14:21
【问题描述】:
过去两天我一直在研究这个问题,但我一直处于空白状态,希望有人能提供帮助。
我有 3 个值分配给始终相同的变量。然后,我将第四个值分配给一个变量,该变量每次在用户输入时都会有所不同。目的是为所有 4 个值获取用户输入。在第四个值上,我希望程序反复要求我输入,直到我按下“q”。每次我输入一个值时,它都会附加到一个已输入现有 3 个值的 CSV 文件。在 q 之后,继续执行脚本。
value1 = input("enter value1 ")
value2 = input("enter value2 ")
value3 = input("enter value3 ")
value4 = input("enter value4 ")
value4 = input("enter value4 ")
...
...
...
q
CSV 文件 应该是这样的,确保前三个值是恒定的,但每个条目的第四个值是不同的。
column1,column2,column3,column4
value1,value2,value3,something_new
value1,value2,value3,something_new2
value1,value2,value3,something_new3
value1,value2,value3,something_new4
value1,value2,value3,something_new5
value1,value2,value3,something_new6
...
...
...
我有下面的代码,它每次都在 CSV 文件中获取值并添加 1 行。我尝试使用文件模式“a”,但似乎无法在 CSV 中为下一个添加新行。当我在下面的代码中添加一个 for 循环时,我得到“TypeError:'DictWriter' object is not iterable”错误。
with open('file_append.csv', 'w', newline='') as file:
fieldnames = ['column1', 'column2', 'column3', 'column4']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'column1': value1, 'column2': value2, 'column3': value3, 'column4': value4})
我在添加 for/while 循环、if 语句时迷失了方向,如果有人无法为我指明正确的方向或向我展示一个可行的解决方案,我将不胜感激
我查看了许多堆栈溢出和博客,但没有什么能帮助我解决这个问题。
how to append to a new row when writing to CSV file
【问题讨论】:
-
你能否提供一个完整的例子来解决这个问题?您上面的代码(写给
file_append.csv)看起来可以毫无问题地运行。我不确定你是如何使用 writer 最终得到object is not iterable错误的。 -
您的代码示例不完整 - 缺少输入部分。我宁愿去循环收集用户的输入,然后写入文件。为此,您只需循环
writerow部分
标签: python python-3.8