Получить объект File, используемый объектом CSV Reader / Writer
Вопрос
Есть ли способ получить доступ к объекту файла, используемому объектом записи / чтения CSV после его создания? Я открыл модуль CSV, и кажется, что его конкурс встроен. Я также попытался установить объект файла как свойство, но получаю следующую ошибку:
AttributeError: '_csv.writer' object has no attribute 'fileobj'
Решение
csv.writer
является " встроенным " функция. То есть он написан в скомпилированном C-коде, а не в Python. Поэтому его внутренние переменные не могут быть доступны из кода Python.
При этом, я не уверен, почему вам нужно было бы проверить объект csv.writer, чтобы найти объект файла. Этот объект указывается при создании объекта:
w = csv.writer(fileobj, dialect, ...)
Поэтому, если вам понадобится получить доступ к этому объекту позже, просто сохраните его в другой переменной.
Другие советы
Из того, что я могу сказать, нет простого способа вернуть объект файла, как только вы поместите его в объект CSV. Мой подход, вероятно, заключался бы в создании подкласса писателя csv и читателей, которых вы используете, чтобы они могли нести эти данные вместе с собой. Конечно, это предполагает возможность прямого доступа к типам классов, которые выполняет функция фабрики (помимо прочего).