Форум сайта python.su
Приветствую, подскажите пожалуйста, как можно писать в файл различного рода “сырые” данные без учёта автоматических преобразований кодировок, например, у меня есть некая строка, я просто хочу записать её в файл без каких-либо дополнительных преобразований, то есть просто некий поток произвольных данных.
Допустим, согласно этому примеру
f = open("somedate.html", "wb")
f.write(data)
f.close()
Офлайн
Для этого у вас должны в data быть сырые данные а не unicode.
#!/usr/bin/env python
# -*- coding: cp1251 -*-
a=u“hello приветик”
with open(“a.dat”,“wb”) as f:
f.write(buffer(a))
Офлайн
ясно, спасибо, то есть ф-ция buffer создаёт “буфер” из любого объекта, поддерживающего buffer call interface - я правильно понимаю?
Не могли бы уточнить, как работает эта функция в случае большого объёма исходных данных (например, строка содержит скажем 32МБ), ф-ция buffer создаст её копию, или будет работать со строкой, как с неким генератором, и брать некоторую часть от размера ? если да (будет брать некоторую часть), то можно ли как-то его задавать самостоятельно (то есть собственно, задавать размер этого промежуточного буфера) ?
Офлайн
в общем, сделал как-то так:
offset, size = 0, 1024
while True:
buf = buffer(data, offset, size)
if (not buf):
break
f.write(buf)
offset += size - 1
f.close()
Офлайн
1. Мне кажется вы зря заморачиваетесь, работа с буфером это почти
char buffer[32*M];
f=fopen(...);
fwrtie(buffer,32*M);
Офлайн