我有点新,无法配置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
我猜这是和我一起读写同一个文件的?我试着调查一下,但所有的解决方案看起来都很复杂,我觉得这可能是一个非常简单的常见任务。
所以我的问题是,这样做的好方法是什么?
答案 0 :(得分:1)
这是一种方法,唱一个临时文件:
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)
读取和写入同一文件会更复杂。 你不会获得太多(任何?)性能,因为你无论如何都需要写入数据。 只删除文件中间的内容意味着重写所有其余的文件内容。
答案 1 :(得分:0)
如果你打电话给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