将string写入新行

我有用户名+姓氏+分数写在excel文件中的代码。 但是我希望它有标题,例如第一行的“名字”“姓”和“分数”。 然后每次代码重新启动,我想新的数据存储在这些标题下的新列。

您需要检测您打开的文件是否已经有一行或多行写入。 一个简单的方法就是在追加模式下打开文件后调用tell方法。 tell将报告文件中的当前位置,这将在追加模式下结束。 如果位置为0 ,则只需要写入标题,因为这表示文件是空的。

 if form == 'a': #if form entered is a with open ('classa.csv','a',newline='') as keerthan: foo = csv.writer(keerthan,delimiter=',',) if keerthan.tell() == 0: # add this test! bar = ['Name', 'Surname', 'Score'] foo.writerow(bar) bar = [[user,surname, score]] foo.writerows(bar) 

另一件事(与文件头问题无关):你应该避免在不同的if语句之间重复这么多的代码。 通常你可以重复使用相同的逻辑,只需要不同的值。 以下是如何将上面的if变成一个可用于所有三种forms的通用代码:

 filename = "class{}".format(form) # use string formatting to get the right filename with open (filename,'a',newline='') as keerthan: # open the file using a variable name foo = csv.writer(keerthan,delimiter=',',) if keerthan.tell() == 0: bar = ['Name', 'Surname', 'Score'] foo.writerow(bar) bar = [[user,surname, score]] foo.writerows(bar) 

您可能可以为您的问答代码做类似的事情,答案和算术运算符存储在variables中。