首页 > 编程问答 >如何在此 csv 代码中放入多行

如何在此 csv 代码中放入多行

时间:2024-07-29 04:13:34浏览次数:13  
标签:python loops csv while-loop new-operator

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 语句块确保文件被正确关闭。

标签:python,loops,csv,while-loop,new-operator
From: 78804719

相关文章