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

如何在Python中删除文件中所有行末尾的空白?,python,python-2.7,removing-whitespace,Python,Python 2.7,Removing Whitespace,我有点新,无法配置rstrip命令来执行我想要的操作 我在一个文件上做了一些字符串操作,效果非常好,我已经将结果写入了一个新文件。这个新文件现在只需要删除所有行末尾的尾随空格 我的代码不起作用,如下所示: fo = open( FILENAME, 'r+' ) data_l = fo.read() data = data_l.rstrip fo.write(data) 这给了我一个错误: fo.write(data) TypeError: expected a character bu

我有点新,无法配置
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_wrong = data_l.rstrip
>>> type(data_wrong)
<type 'builtin_function_or_method'>
所以你可能想要

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)
读取和写入同一个文件将更加复杂。 您不会获得太多(任何?)性能,因为您无论如何都需要写入数据。
删除文件中间的东西意味着重写文件内容的其余部分。 啊,我意识到我把我的代码示例搞砸了。我相信我的代码与您的解决方案类似,但我仍然收到相同的错误消息。我认为您需要用复制问题的确切代码开始一个新问题-尽管(同时)读写同一个文件是个坏主意。试试迈克的主意?
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)