Создание пользовательского файла, как объект Python предложения? - PullRequest
6 голосов
/ 19 октября 2010

Привет, я собираюсь реализовать свой собственный файл, такой как объект, для внутреннего двоичного формата, который мы используем на работе (я не хочу вдаваться в подробности, потому что не знаю, смогу ли я).Я пытаюсь перейти к более питонному способу ведения дел, поскольку в настоящее время у нас есть две функции чтения / записи (каждая ~ 4 тыс. Строк кода), которые делают все.Однако нам нужно больше контроля / утонченности, поэтому факт, что я переписал этот материал.

Я посмотрел на документацию по python, и они говорят, какие методы мне нужно реализовать, но не упоминают такие вещи, как iter () / и т. Д.

В основном я хотел бы сделать что-то вроде этого:

output_file_objs = [
    open("blah.txt", "w")
    open("blah142.txt", "wb")
    my_lib.open("internal_file.something", "wb", ignore_something=True)
]

data_to_write = <data>

for f in output_file_objs:
    f.write(data_to_write)

Так что я могу смешать это с другими, и в основном иметь уровеньпрозрачность.Я добавлю к нему пользовательские методы, но это не проблема.

Есть ли какая-нибудь хорошая справка относительно написания вашего собственного файла, такого как объекты?Как любая форма ограничений или специальные методы ( iter ).Я должен реализовать?

Или есть хороший пример из стандартной библиотеки Python, на который я могу посмотреть?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

То, что составляет «подобный файлу», на самом деле зависит от того, для чего вы собираетесь его использовать; не все методы должны быть реализованы (или иметь разумную реализацию).

Сказав это, file и итератор документы - это то, что вы хотите.

0 голосов
/ 19 октября 2010

Почему бы не заполнить ваши данные в StringIO? В противном случае вы можете просмотреть документацию и реализовать все методы, подобные файлам. По правде говоря, в Python нет реальных интерфейсов, и некоторые функции (например, tell ()) могут не иметь смысла для ваших файлов, поэтому вы можете оставить их неисполненными.

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