大量のデータをCSV形式に変換するスクリプトを作成しています。 Google AppEngineではmapbackduce APIを使用して実行されます。これは、データの各行がフォーマットされ、コールバック関数で別々に出力されることを意味します。CSV形式の単一行の書式設定
csv
モジュールに既に存在するロジックを利用してデータを正しいフォーマットに変換したいのですが、CSVライターがファイルライクなオブジェクトを想定しているため、それぞれにStringIO
をインスタンス化する必要がありますオブジェクトに行を書き込み、その都度オブジェクトの内容を返します。
これは愚かなようですが、書き込み部分なしでcsv
モジュールの内部CSVフォーマットロジックにアクセスする方法があるかどうかは疑問です。
'tempfile'モジュールは役に立ちますか?あなたは本当にOSで表示されないファイルハンドルを与えることができます – wim
@wimありがとう、しかし本当にありません。 AppEngineのファイルシステムへのアクセスがないという事実ではないにしても、各行に別々のファイルが必要です。 –
mapreduceを見たことがないので、特にコールバック実行環境に関する制約についてはわかりません。あなたのプログラム(コールバックを提供するプログラム)は、mapreduceの呼び出し中に実行されますか?つまりあなたはグローバルな状態を保つことができますか、それとも毎回 'StringIO'のようなものを再インスタンス化する必要がありますか? –