Вопрос

Вопрос:

Как мне получить поток байтов, который работает как 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.

Смотрите полную документацию по адресу:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top