import csv
nome = input("nome: ")
numero1 = input("Inscrição: ")
secao = input("Seção: ")
local = input("local: ")
continuar = input("continuar? S/N: ")
while(continuar == "S"):
nome = input("nome: ")
numero1 = input("Inscrição: ")
secao = input("Seção: ")
local = input("local: ")
continuar = input("continuar? S/N: ")
v = open("valores", "w")
writer = csv.writer(v)
writer.writerow([nome, numero1, secao, local])
else:
print("ok")
如果是葡萄牙语,请忽略。我试图将变量按顺序写入 csv 文件中,但当我运行它时,它只写入一行,并不断删除和重写它(我希望它处于循环状态,直到“连续”== N 就像
nome: asdjhagsdjh
numero1: kasjhdkhasdkl
secao: sajfdksdh
local: asjfkjfhsdkj
continuar? S/N: S
(asdjhagsdjh,kasjhdkhasdkl,sajfdksdh,asjfkjfhsdkj)
nome: asdjhagsdjh
numero1: kasjhdkhasdkl
secao: sajfdksdh
local: asjfkjfhsdkj
continuar? S/N: N
(asdjhagsdjh,kasjhdkhasdkl,sajfdksdh,asjfkjfhsdkj
asdjhagsdjh,kasjhdkhasdkl,sajfdksdh,asjfkjfhsdkj)
我现在就开始,如果有什么愚蠢的事情:我很抱歉
你遇到的问题是,你每次循环迭代时都以写入模式 (
'w'
) 打开文件。写入模式会覆盖文件中现有的任何内容,因此你只会看到最后写入的行。
要解决此问题,你需要以追加模式 (
'a'
) 打开文件。这将在现有内容的末尾添加新行,而不是覆盖它们。
此外,你应该在循环 之外 打开文件,并在完成后关闭它,以避免不必要的打开和关闭操作。
下面是修改后的代码:
import csv
# 在循环外打开文件,使用追加模式 ('a')
with open("valores.csv", "a", newline='') as v:
writer = csv.writer(v)
nome = input("nome: ")
numero1 = input("Inscrição: ")
secao = input("Seção: ")
local = input("local: ")
continuar = input("continuar? S/N: ")
while continuar == "S":
writer.writerow([nome, numero1, secao, local])
nome = input("nome: ")
numero1 = input("Inscrição: ")
secao = input("Seção: ")
local = input("local: ")
continuar = input("continuar? S/N: ")
else:
print("ok")
# 文件将在 with 语句块结束后自动关闭
这段代码首先打开一个名为
valores.csv
的文件(如果文件不存在则创建它),并将一个
csv.writer
对象与该文件相关联。然后它会提示用户输入数据,并使用
writerow()
方法将数据写入文件。这个过程将一直持续到用户输入
N
来停止循环。最后,
with
语句块确保文件被正确关闭。