2015-02-11 66 views
0

我已經看過了有關此主題的許多其他主題,但似乎無法找到在文件末尾追加新行的正確代碼。Python - 寫入新行

這裏是我的代碼:

Name=input('What is your name:') 
Date=input('What is the date:') 
Score=input('What was your high score:') 

myFile=open('Scores.txt','a') 
myFile.write("{},{},{}"+"\n".format(Name, Date, Score)) 
myFile.close() 

然而,這似乎在Score.txt文件輸出的唯一的事情就是{},{},{}。 我的預期輸出是,每次運行此程序時,它都會將新數據輸出到新行,而不會覆蓋上面的行。

+1

您的預期輸出是什麼? – reynoldsnlp 2015-02-11 18:53:05

+0

我的預期輸出是這樣的,所以每次我運行這個程序時,它都會將新數據輸出到一個新的行上,而不會覆蓋它上面的行。 – UserIsMe 2015-02-11 18:53:52

回答

1

"{},{},{}"+"\n".format(Name, Date, Score)

您正在呼籲串"\n"format方法。

嘗試"{},{},{}\n".format(Name, Date, Score)

0

它正在格式化\n(換行)字符串,然後添加大括號。嘗試這個。

myFile.write(("{},{},{}"+"\n").format(Name, Date, Score)) 
+0

非常感謝。 – UserIsMe 2015-02-11 18:58:17

0

只需使用括號:

myFile.write(("{},{},{}"+"\n").format(Name, Date, Score)) 

或者,也許更好:

myFile.write(("{},{},{}\n").format(Name, Date, Score)) 

然後.format將被應用到整個字符串。

+0

非常感謝。 – UserIsMe 2015-02-11 18:57:07

2

當你這樣做:

"{},{},{}"+"\n".format(Name, Date, Score) 

的Python解釋爲:

"{},{},{}"+("\n".format(Name, Date, Score)) 

因爲方法調用.format(...)has a tighter binding+操作。意思是,它僅適用於字符串"\n",而不適用於組合字符串"{},{},{}"+"\n"

此外,調用str.format方法對字符串"\n"實際上是一個無操作:

>>> "\n".format(1, 2, 3) 
'\n' 
>>> 

所以,這被寫入到文件中的字符串就是"{},{},{}"+"\n""{},{},{}\n"


要解決此問題,只需在格式字符串中的換行符:

myFile.write("{},{},{}\n".format(Name, Date, Score)) 
+0

非常感謝 – UserIsMe 2015-02-11 18:59:13

0

嘗試下面的代碼:

Name=input('What is your name:') 
Date=input('What is the date:') 
Score=input('What was your high score:') 

myFile=open('Scores.txt','a') 
myFile.write("{0}\n{1}\n{2}\n".format(Name, Date, Score)) 
myFile.close() 

看看這個文檔https://docs.python.org/3/library/string.html#format-examples看到格式的例子。

此外,您忘記在每個值上使用「\ n」。

問候,

1

您正在格式化\ n

你需要告訴那就是\ n整個字符串格式的字符串的一部分。

myFile.write(str("{},{},{}"+"\n").format(Name, Date, Score))