Я создаю скрипт для преобразования большого количества данных в формат CSV. Он работает в Google AppEngine, используя API-интерфейс mapreduce, который имеет значение только в том смысле, что он означает, что каждая строка данных отформатирована и выводится отдельно, в функции обратного вызова.Форматирование одной строки как CSV
Я хочу воспользоваться логикой, которая уже существует в модуле csv
, чтобы преобразовать мои данные в правильный формат, но поскольку CSV-писатель ожидает файл-подобный объект, мне нужно создать экземпляр StringIO
для каждого строка, записать строку в объект, а затем вернуть содержимое объекта каждый раз.
Это кажется глупым, и мне интересно, есть ли способ получить доступ к внутренней логике форматирования CSV модуля csv
без письменной части.
Помогает ли модуль 'tempfile'? Вы можете дать дескриптор файла, который на самом деле не отображается в ОС. – wim
@wim Спасибо, но на самом деле. Мне все равно нужен отдельный для каждой строки, даже если бы не тот факт, что нет доступа к файловой системе AppEngine. –
Никогда не смотрел на mapreduce, поэтому я не уверен в ограничениях, в частности, когда речь идет о среде выполнения обратного вызова. Выполняется ли ваша программа (которая обеспечивает обратный вызов) во время всего вызова mapreduce? То есть. можете ли вы сохранить глобальное состояние, или вам действительно нужно каждый раз переустанавливать такие вещи, как 'StringIO'? (Не предлагая хранить глобальные объекты, заметьте, это просто я хотел бы знать окружающую среду) –