Python ввод / вывод, файлы - PullRequest
4 голосов
/ 22 ноября 2008

Мне нужно написать несколько методов для загрузки / сохранения некоторых классов в двоичный файл и из него. Однако я также хочу иметь возможность принимать двоичные данные из других мест, например двоичные строки.

В c ++ я мог бы сделать это, просто заставив мои методы класса использовать std :: istream и std :: ostream, которые могли бы быть файлом, потоком строк, консолью, чем угодно.

Имеет ли Python аналогичный класс ввода / вывода, который можно сделать для представления практически любой формы ввода-вывода или, по крайней мере, файлов и памяти?

Ответы [ 2 ]

10 голосов
/ 22 ноября 2008

Способ Python сделать это - принять объект, который реализует read () или write (). Если у вас есть строка, вы можете сделать это с помощью StringIO :

from cStringIO import StringIO

s = "My very long string I want to read like a file"
file_like_string = StringIO(s)
data = file_like_string.read(10)

Помните, что Python использует типизацию утилит: вам не нужно задействовать общий базовый класс. Пока ваш объект реализует read (), его можно читать как файл.

0 голосов
/ 22 ноября 2008

Модули Pickle и cPickle также могут быть вам полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...