Spec-Zone.ru › Python 2.7

StringIO — Чтение и запись строк как файлов

Этот модуль реализует похожий на файл класс StringIO, который читает и записывает буфер строк (также известный как файлы в памяти). Обратитесь к описанию объектов файлов для операций (раздел Объекты файлов). (Для стандартных строк см. str и unicode.)

class StringIO.StringIO([buffer])

При создании объекта StringIO его можно инициализировать существующей строкой, передав строку в конструктор. Если строка не указана, объект StringIO будет создан пустым. В обоих случаях начальная позиция файла устанавливается в ноль.

Объект StringIO может принимать как строки Unicode, так и 8-битные строки, но при смешивании нужно соблюдать осторожность. Если используются оба типа, 8-битные строки, которые нельзя интерпретировать как 7-битные ASCII (использующие 8-й бит), приведут к ошибке UnicodeError при вызове getvalue().

Для следующих методов объектов StringIO требуется особое внимание:

StringIO.getvalue()

Извлечь все содержимое «файла» в любой момент до вызова метода close() объекта StringIO. См. примечание выше о смешивании строк Unicode и 8-битных строк; такое смешивание может привести к тому, что этот метод вызовет UnicodeError.

StringIO.close()

Освободить буфер памяти. Попытка выполнить дальнейшие операции с закрытым объектом StringIO вызовет ValueError.

Пример использования:

import StringIO

output = StringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'

# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()

# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()

cStringIO — Более быстрая версия StringIO

Модуль cStringIO предоставляет интерфейс, похожий на интерфейс модуля StringIO. Интенсивное использование объектов StringIO.StringIO может быть сделано более эффективным с помощью функции StringIO() из этого модуля.

cStringIO.StringIO([s])

Возвращает поток, похожий на StringIO, для чтения или записи.

Поскольку это фабричная функция, возвращающая объекты встроенных типов, нет способа создать свою версию с помощью наследования. Невозможно задать атрибуты для него. Используйте исходный модуль StringIO в этих случаях.

В отличие от модуля StringIO, этот модуль не может принимать строки Unicode, которые нельзя закодировать как простые ASCII-строки.

Еще одно отличие от модуля StringIO заключается в том, что вызов StringIO() со строковым параметром создает только для чтения объект. В отличие от объекта, созданного без параметра строки, у него нет методов записи. Такие объекты обычно не видны. Они появляются в трассировках как StringI и StringO.

Также предоставляются следующие объекты данных:

cStringIO.InputType

Тип объекта, созданного при вызове StringIO() со строковым параметром.

cStringIO.OutputType

Тип объекта, возвращаемого при вызове StringIO() без параметров.

Также существует C API для модуля; для получения дополнительной информации обратитесь к исходному коду модуля.

Пример использования:

import cStringIO

output = cStringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'

# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()

# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/stringio.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API