2015-03-02 51 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))