2010-12-02 3 views
0

вот мой код.Как сохранить значение cgi.parse_multipart

query = cgi.parse_multipart(rfile, pdict) 
upfilecontent = query.get('file') 

здесь, я хочу, чтобы сохранить upfilecontent[0] в файл в двоичном режиме.

ТИА

+0

0x330xba - это не двоичные данные, это своего рода гексагон. – 2010-12-02 14:57:38

+0

Ваши «двоичные данные», то есть `` 0x330xba ..... `, выглядят как строковое представление из двух или более шестнадцатеричных чисел. Можете ли вы уточнить возможные значения и длину? – martineau 2010-12-02 15:15:51

ответ

2

Поскольку значение уже str, все, что вам нужно сделать, это открыть файл в двоичном режиме и .write() это:

with file('name.bin', 'wb') as f: # 'w' for writing, 'b' for binary 
    f.write(d['key_1']) 

Если вы хотите повторно интерпретировать текст как на самом деле это какой-то гексагон, или что-то еще, тогда вам придется быть более конкретным.

0
def writeBinaryData(binaryData): 
    f = open("data.bin", "wb") 
    f.write(binaryData) 

«b» в строке режима файла указывает, что вы хотите читать/записывать двоичные данные.

Однако, например, вы видите, что значение key_1 представляет собой шестнадцатеричную строку «0x330xba», которую нужно сначала преобразовать в двоичный.

0

Из последней информации в вашем вопросе звучит так, будто вы хотите написать байт поток в файл в двоичном формате. Как показали более ранние ответы, это легко, просто убедитесь, что сначала открываете файл в двоичном режиме (трейлинг «b» во втором аргументе для открытия).

f = open("output_file_name", "wb") 
f.write(upfilecontent[0]) 
f.close() 

Если это не сработает, попробуйте выполнить печать из repr(upfilecontent[0][:64]). Если результат выглядит как серия шестнадцатеричных цифр без указания 0x, тогда вам нужно будет декодировать его в байтовые значения перед записью.

Смежные вопросы