BytesIO с python версии v2.5
Вопрос
Вопрос:
Как мне получить поток байтов, который работает как StringIO для Python 2.5?
Применение:
Я конвертирую PDF-файл в текст, но не хочу сохранять файл на жесткий диск.
Другие Мысли:
Я подумал, что мог бы использовать StringIO, но там нет параметра mode (я предполагаю, что "Строка" подразумевает текстовый режим).
По-видимому, io.Класс BytesIO является новым в версии 2.6, так что у меня это тоже не работает.
У меня есть решение с модулем tempfile, но я бы хотел избежать любых операций чтения / записи на / с жесткого диска.
Решение
В Python 2.x "строка" означает "байты", а "юникод" означает "строка".Вы должны использовать StringIO
или cStringIO
модули.Режим будет зависеть от того, какой тип данных вы передаете в качестве параметра буфера.
Другие советы
Если вы работаете с PDF, то StringIO
все должно быть в порядке, пока вы обращаете внимание на документы:
Объект StringIO может принимать либо юникод, либо 8-битные строки, но смешивание этих двух может потребовать некоторой осторожности.Если используются оба варианта, 8-битные строки, которые не могут быть интерпретированы как 7-битные ASCII (использующие 8-й бит), вызовут UnicodeError при вызове getvalue().
Обратите внимание, что это не верно для cStringIO
:
В отличие от файлов памяти, реализованных модулем StringIO, файлы, предоставляемые этим модулем, не способны принимать строки Unicode, которые не могут быть закодированы как простые строки ASCII.
Смотрите полную документацию по адресу: