2015-03-02 470 views
1

我正在通过基于用户输入的代码的python追加一个文件。在python文件中添加段落

with open ("markbook.txt", "a") as g: 
     g.write(sn+","+sna+","+sg1+","+sg2+","+sg3+","+sg4) 

snsnasg1sg2sg3sg4已经全部由用户,输入的时候程序完成一个行会被添加到'markbook.txt'文件中的格式:

00,SmithJE,a,b,b,b 
01,JonesFJ,e,d,c,d 
02,BlairJA,c,c,b,a 
03,BirchFA,a,a,b,c 

问题是当再次使用该程序并且文件被进一步追加时,新行被简单地放在前一行的末尾。如何将附加文本放置在上一行下方?

回答

1

将“\ n”添加到写入行的末尾。

所以:

g.write(sn+","+sna+","+sg1+","+sg2+","+sg3+","+sg4+"\n") 
1

你需要写你对你的行之间的行分隔符:

g.write(sn + "," + sna + "," + sg1 + "," + sg2 + "," + sg3 + "," + sg4 + '\n') 

你似乎是重新发明轮子CSV不过。离开分离(行或列)到csv library代替:

import csv 

with open ("markbook.txt", "ab") as g: 
    writer = csv.writer(g) 
    writer.writerow([sn, sna, sg1, sg2, sg3, sg4]) 
0

你错过了你的字符串末尾的新行字符。另外,虽然在这种情况下字符串连接是完全正确的,但您应该知道Python有替代格式化字符串的选项。

with open('markbook.txt', 'a') as g: 
     g.write('{},{},{},{},{},{}\n' 
       .format(sn, sna, sg1, sg2, sg3, sg4))