首页 > 解决方案 > 将用户输入逐行附加到 CSV 文件

问题描述

我在过去的两天里一直在做这件事,但我一直处于空白状态,希望有人能提供帮助。

我有 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 语句时迷失了方向,如果有人无法为我指明正确的方向或向我展示一个可行的解决方案,我将不胜感激

我看过很多堆栈溢出和博客,但没有什么能帮助我解决这个问题。

写入CSV文件时如何附加到新行

如何将新数据附加到新行

将数据附加到 csv 文件

标签: pythonpython-3.8

解决方案


import csv
value1 = input("enter value1 ")
value2 = input("enter value2 ")
value3 = input("enter value3 ")
value4 = '0'

data = []

while True:
    value4 = input("enter value4 ")
    if value4.upper() == "Q":
        break
    data.append([value1,value2,value3,value4])
    

with open('file_append.csv', 'w', newline='') as file:
    writer = csv.writer(file, delimiter=',')
    fieldnames = ['column1', 'column2', 'column3', 'column4']
    writer.writerow(['column1', 'column2', 'column3', 'column4'])
    for row in data:
        writer.writerow(row)

import pandas as pd
pd.read_csv('file_append.csv')

推荐阅读