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