【问题标题】:multiple values per row to file - python每行有多个值到文件 - python
【发布时间】:2016-08-18 14:50:07
【问题描述】:

我正在尝试将每个用户的分数存储到 python 中的文件中,但我无法做到。

我有两个列表,names[]points[]。每次程序运行时,它都会附加用户和分数,但是当它再次运行时,文件中的分数会被覆盖而不是添加到该用户。

def quiz():

names=[]
points=[]
name=input("What is your name?")
for x in range (0,1)
    pnt=0  
    num1=3
    num2=4
    print("Whats", num1, '+', num2)
    answer = num1+num2
 userAns=int(input())
 if userAns==answer:
    print("Excellent")
    pnt = pnt+1
 else:
    print("wrong") 
    print("Well done", name, "you scored", point, "/10")
    points.append(point)
    names.append(name)
    class_name = class_name + ".csv"   
    c=open(class_name , 'a+') ##This part forward it prints to another row rather then appending score in the same row
    mw = csv.writer(c)
    rows = zip(names,points)
    mw.writerows(rows)
    c.close()

我需要打印用户,然后在旁边打印多个分数,任何帮助将不胜感激

【问题讨论】:

  • 你的程序中没有User[] & Score[]
  • 抱歉!愚蠢的错误,对不起。我在想一件事写另一件事。
  • 如果我可以这么说,这是 1980 年代。像这样在原始文件中存储东西真的很麻烦。使用数据库要容易得多。
  • @e4c5 是的,但这只是我正在尝试的东西

标签: python csv file-io python-3.5


【解决方案1】:

嗯,您的代码无法运行,除了将值附加到同一行的部分之外,它看起来不像它应该做的事情。我对您要执行的操作的实际要求是什么感到困惑,但是要将值附加到同一行(假设每个用户都有自己的文件):

c=open(class_name , 'a+') 

可以改成

c=open(class_name , 'rb+')  # csv are considered as binary files
c.seek(-2,2) # go to \r\n
mv.writerows(   #... write now

或者,如果所有用户和分数都在同一个文件中(这似乎是您想要的,根据您的描述),您可以简单地替换当前文件的内容,因此只需正常写入并替换现有内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 2014-03-20
    • 1970-01-01
    • 2017-01-15
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多