2013-04-13 63 views
0

我正在閱讀並追加到正在打開的文本文件中,並且每次運行我的Python程序時都會讀取它。它基本上是一個字符串的日誌。 問題是,當我最初寫入空白文件時,必須包含action.write('\n')以便下一行打印下一個字符串。如何附加到文件而不添加' n'?

但是,當我下次運行Python程序時讀取文件時,它會讀取「\ n」並將其連接到之前添加到列表中的元素。

這裏就是基本上發生的事情:

pc = ["121", "343", "565", "787"] 

with open(r"C:\tt.txt", "r+") as act: 
    curr=[] 

    for row in act: 
     if row == '\n': 
     pass 
     else: 
     curr.append(row) 

    for i in pc: 
     act.write(i) 
     act.write("\n") 

print curr 

>> curr = ['121\n', '343\n', '565\n', '787\n', '121\n', '343\n', '565\n', '787\n', '121\n', '343\n', '565\n', '787\n', '121\n', '343\n', '565\n', '787\n', '121\n', '343\n', '565\n', '787\n'] 

我真的難倒如何來解決這個問題。

回答

5

條線:

for row in act: 
    row = row.strip() 
    if row: 
     curr.append(row) 
+1

如果行包含開頭或結尾的空格則無法使用此刪除最後一個字符。它們將被剝離以及換行符。 –

+0

@MaksymPolshcha:真的!這個方法只有在沒問題的時候纔會起作用(對於問題中的行,它們可能只是數字)。 – icktoofay

+0

@MaksymPolshcha'row.rstrip('\ n')'是最安全的,但方法仍然有效,但我們通常認爲情況並非如此,只是簡單地使用'.strip()',因爲它更快 – jamylak

-2

您可以使用

for line in open(somefile): 
    line = line.strip() 

去除拖行尾。

1

剛剛從每行

for row in act: 
row = row[:-1] 
if row: 
    curr.append(row)