2013-03-18 106 views
2

我一直在試圖用python重寫一個文本文件,在那裏我去了一個文件, 抓住每一行,追加一個字符串到行上,然後重寫 新添加的行到文本文件。我遇到的問題是這個 新構建的文本文件格式不正確。該文件包含 行,其中每行包含三個數字,用逗號分隔。如果我的文件 如下所示:無法刪除換行符

57.88, 58.45, 45.31 
57.88, 58.45, 45.31 
57.88, 58.45, 45.31 

我要添加字符「A」的線,那麼我需要的文件 看起來像這樣:

57.88, 58.45, 45.31, a 
57.88, 58.45, 45.31, a 
57.88, 58.45, 45.31, a 

相反時,文件格式,如本

57.88, 58.45, 45.31 
,a 
57.88, 58.45, 45.31 
,a 
57.88, 58.45, 45,31 
,a 

有趣的是(當我在兩者的emacs和gedit中打開),線的數量仍然是相同的(3),而不管格式的的文件。我對此很困惑,有些沮喪。以下是我用來重寫該文件的代碼 。我的python技能真的需要 ,所以它可能是我需要使用的一些明顯的python函數,我還沒有聽說過 。基本上,一旦我確定的文件路徑存在,我稱之爲 改寫子程序,如下:

def getLines(filePath): 
    move(filePath, filePath+"~") 
    destination = open(filePath, "w") 
    source = open(filePath+"~", "r") 
    for line in source: 
      destination.write(line.strip("\n") + ",a\n")) 
    source.close() 
    destination.close() 
+0

我重新格式化你的一些文字。讓我知道如果我做錯了。 – mgilson 2013-03-18 18:51:40

+1

我無法複製此內容。在添加',a \ n'之前,您正確地刪除了每行的最後一個'\ n'。你確定你正在查看正確的文件嗎? – 2013-03-18 18:51:45

+0

@DJV - OP正在使用*不同*文件。 – mgilson 2013-03-18 18:52:25

回答

3

你可以嘗試是不太明顯的,讓帶做的工作的一個跨平臺的解決方案

... 
for line in source: 
    destination.write(line.strip() + ",a\n")) 

或者試試這個,

for line in source.readlines() 
    destination.write(line + ",a\n")) 
+0

第一條建議奏效。非常感謝! – Nathan 2013-03-18 19:11:55

2

如果您正在使用非Unix平臺上,它可能是你的文件包含\r\n行終止。嘗試正確的剝離\r\n並追加",a\r\n"

destination.write(line.rstrip("\r\n") + ",a\r\n")) 

這樣,即使該文件只包含\n行尾,所以它是強大的。

+0

或以「rU''方式打開文件 – mgilson 2013-03-18 18:55:11