Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2010 13:27:08

XdenisX
От:
Зарегистрирован: 2009-10-31
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление последнего символа в текстовом файле

Коллеги, хочу удалить в пакетном режиме последний символ в каждом текстовом файле (знак переноса строки).
Как это лучше сделать?



Офлайн

#2 Июль 9, 2010 14:09:57

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Удаление последнего символа в текстовом файле

Укорачивает файл на 1 байт, самый быстрый способ:

>>> f = open('somefile.txt, 'ab')
>>> f.truncate(f.tell() - 1)
>>> f.close()
Если файл имеет нулевую длину, получишь ошибку (IOError) в момент truncate'а.

Кошерный способ, должен быть самым быстрым, урезает не более 10 последних \r и \n:
>>> f = open('otherfile.txt', 'rb')
>>> f.seek(0, 2)
>>> f.seek(max(f.tell() - 10, 0))
>>> tail_bytes = f.read()
>>> f.close()
>>> f = open('otherfile.txt', 'ab')
>>> f.truncate(f.tell() - len(tail_bytes))
>>> f.write(tail_bytes.rstrip('\r\n'))
>>> f.close()
p.s. А вообще, я с файлами на таком уровне не работаю, так что не эксперт :-).

..bw



Отредактировано (Июль 9, 2010 14:11:30)

Офлайн

#3 Июль 9, 2010 17:59:26

XdenisX
От:
Зарегистрирован: 2009-10-31
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление последнего символа в текстовом файле

bw
Укорачивает файл на 1 байт, самый быстрый способ:
>>> f = open('somefile.txt, 'ab')
>>> f.truncate(f.tell() - 1)
>>> f.close()
Если файл имеет нулевую длину, получишь ошибку (IOError) в момент truncate'а.
Отлично, большое спасибо! Второй способ пока не пробовал.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version