2016-12-20 5 views
1

Я немного новичок и не могу настроить команду rstrip, чтобы делать то, что я хочу.Как удалить пробелы в конце всех строк в файле в Python?

Я сделал несколько строковых манипуляций над файлом, который отлично поработал, и я написал результаты в новый файл. Этот новый файл теперь просто нуждается в завершающем пробеле, удаленном от конца всех строк.

Мой код, который не работает выглядит следующим образом:

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

Это дает мне ошибку:

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

Я предполагаю, что это делать со мной читать и писать на тот же файл? Я попытался изучить это, но все решения выглядели многословными и сложными, и я считаю, что это, вероятно, довольно простая, общая задача.

Так что мой вопрос в том, что это хороший способ сделать это?

ответ

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) 

Чтение и запись в тот же файл будет более сложным. Вы не получите много (никакой?) Производительности, потому что вам все равно нужно записывать данные. Просто удаление чего-то в середине файла означает переписывание всего остального содержимого файла.

0

Если вы звоните data = data.rstrip вы squirrelled прочь функцию, а не назвал его:

Учитывая

>>> 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 
+0

А, я понимаю, что испортил мой пример кода. Я считаю, что мой код похож на ваше решение, но я все равно получаю то же сообщение об ошибке. –

+1

Думаю, вам нужно задать новый вопрос с точным кодом, который реплицирует проблему - хотя чтение и запись в один и тот же файл (в то же время) - плохая идея. Попробуй идею Майка? – doctorlove