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

相反,像这样的文件格式(当我在 emacs 和 gedit 中打开它时)

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

有趣的是,无论文件的格式如何,行数仍然是相同的 (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()
4

2 回答 2

3

您可以尝试不那么明确,让 strip 为跨平台解决方案完成工作

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

或者试试这个,

for line in source.readlines()
    destination.write(line + ",a\n"))
于 2013-03-18T18:58:29.563 回答
2

如果您使用的是非 Unix 平台,则您的文件可能包含\r\n行终止符。尝试右剥离\r\n和附加",a\r\n"

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

即使文件仅包含\n行尾,这也有效,因此它很健壮。

于 2013-03-18T18:54:42.347 回答