2013-04-13 31 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)