Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2012 21:46:23

Vi
Зарегистрирован: 2012-11-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

При открытии файла на редактирование не урезать до нуля

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

Представляю себе это так:

    f=open(adir+t.Params['Doc'],'wb')
    fpos=int(t.Params['Edit'])
    f.seek(fpos+61)
    s=t.Params['Value'].encode('latin-1')
    f.write(s)
    f.close()
в adir полный путь к файлу, файл существует, но при открытии урезается до fpos+61 байт, и заполняется нулями.
Как открывать бинарные файлы не урезая их в Python 3?
Или может я что-то делаю неправильно?

Офлайн

#2 Дек. 7, 2012 00:47:25

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

При открытии файла на редактирование не урезать до нуля

Вам следует почитать документацию о функции open (в данном случае о ее втором параметре). В Вашем случае символ “w” указывает на то, что файл открыт для записи, и, если до этого такой файл существовал, он будет перезаписан.

Офлайн

#3 Дек. 7, 2012 03:59:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

При открытии файла на редактирование не урезать до нуля

#!/usr/bin/env python3
 
with open('file.txt', 'r+b') as fout:
    fout.seek(10)
    fout.write(b'abc')

[guest@localhost py]$ cat file.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[guest@localhost py]$ ./t.py
[guest@localhost py]$ cat file.txt
xxxxxxxxxxabcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[guest@localhost py]$



Отредактировано py.user.next (Дек. 7, 2012 03:59:37)

Офлайн

#4 Дек. 7, 2012 09:45:33

Vi
Зарегистрирован: 2012-11-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

При открытии файла на редактирование не урезать до нуля

Намек понял, спасибо.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version