如何删除 Python 文件中所有行末尾的空格?

How do I remove whitespace at the end of all lines in a file in Python?

我有点新,无法配置 rstrip 命令来执行我想要的操作。

我对一个文件进行了一些字符串操作,效果很好,并将结果写入了一个新文件。该新文件现在只需要从所有行的末尾删除尾随空格。

我的不起作用的代码是这样的:

fo = open( FILENAME, 'r+' )
data_l = fo.read()
data = data_l.rstrip
fo.write(data)

这给了我一个错误:

    fo.write(data)
TypeError: expected a character buffer object

我猜这与我读写同一个文件有关?我试着研究这个,但所有的解决方案看起来都很冗长和复杂,我觉得这可能是一个非常简单、常见的任务。

所以我的问题是,这样做的好方法是什么?

如果您调用 data = data.rstrip,则您已经存储了该函数,而不是调用它:

给定

>>> data_l = 'hello           '

通知

>>> data_wrong = data_l.rstrip
>>> type(data_wrong)
<type 'builtin_function_or_method'>

>>> data_right = data_l.rstrip()
>>> data_right
'hello'

所以你可能想要

fo = open ( FILENAME, 'r+' )
data_l = fo.read()
data = data.rstrip()  #call the function
fo.write(data)        #I assume you meant this instead of data_l

这是一种方法,唱一个临时文件:

import shutil
import tempfile


tmp = tempfile.mktemp()
with open(FILENAME) as fobj_in, open(tmp, 'w') as fobj_out:
    for line in fobj_in:
        fobj_out.write(line.rstrip() + '\n')
shutil.move(tmp, FILENAME)

读写同一个文件会比较复杂。 您不会获得太多(任何?)性能,因为无论如何您都需要写入数据。 仅删除文件中间的内容意味着重写文件的所有其余内容。