neuron
Авг. 3, 2009 02:34:59
Ребята, есть вопрос касательно создания бинарных файлов в python. А именно, мне нужно записать некоторое количество чисел в бинарный файл… Интересные грабли возникают тут: когда я записываю в файл ‘\x00’, файл считается бинарным… А если я записываю в файл ‘\x31’, файл сохраняется как текстовый и содержит цифру 1.
Вопроса собственно два:
1) Как число преобразовать в его байтовое представление(и нужно ли вообще это для записи) ?
2) Как записывать чтобы после записи файл был бинарным а не текстовым.
з.ы. Надеюсь ничего не перемудрил… Вообщем если есть что сказать по этому поводу, не поленитесь помочь :))
Striver
Авг. 3, 2009 06:28:01
Нужно открывать файл на запись не так
open('file.bin','w')
а так
open ('file.bin','bw')
Но, вообще-то любой файл можно открыть в текстовом редакторе, и если в нём только один байт ‘\x31’, то там он будет выглядеть текстом - цифрой “1”. В этом нет ничего ужасного. Важно только, чтобы читающая программа его понять смогла.
neuron
Авг. 3, 2009 15:33:12
>> open ('file.bin','bw')
Я так и открываю.
>> Но, вообще-то любой файл можно открыть в текстовом редакторе, и если в нём только один байт ‘\x31’, то там он будет выглядеть текстом - цифрой “1”. В этом нет ничего ужасного. Важно только, чтобы читающая программа его понять смогла.
Проблема то в том что с ‘\x31’ проблем нет, это только пример, проблемы начинаются когда я захочу сохранить 12345, в языке это целочисленный тип (например 4 байта) а в тексте это число займёт 5 байт, вот тут то возникают и проблемы.
Viper
Авг. 3, 2009 16:01:33
Пакуешь число с помощью struct и записываешь в файл.
neuron
Авг. 3, 2009 16:17:37
Огромное спасибо :)