CSVリーダー/ライターオブジェクトが使用するファイルオブジェクトを取得する
質問
インスタンス化された後、CSVライター/リーダーオブジェクトによって使用されるファイルオブジェクトにアクセスする方法はありますか? csvモジュールを開いたところ、コンテストが組み込まれているようです。また、ファイルオブジェクトをプロパティとして設定しようとしましたが、次のエラーが表示されます。
AttributeError: '_csv.writer' object has no attribute 'fileobj'
解決
csv.writer
は「組み込み」です関数。つまり、Pythonではなくコンパイル済みのCコードで記述されています。そのため、内部コードにはPythonコードからアクセスできません。
それは言われていますが、ファイルオブジェクトを見つけるためにcsv.writerオブジェクトを調べる必要があるかどうかはなぜわかりません。そのオブジェクトは、オブジェクトの作成時に指定されます。
w = csv.writer(fileobj, dialect, ...)
したがって、後でそのオブジェクトにアクセスする必要がある場合は、別の変数に保存するだけです。
他のヒント
私が知る限り、csvオブジェクトにファイルオブジェクトを配置すると、ファイルオブジェクトを元に戻す簡単な方法はありません。私のアプローチは、おそらくあなたが使用しているcsvライターとリーダーをサブクラス化して、データを持ち運べるようにすることでしょう。もちろん、これは、ファクトリ関数が作成するクラスのタイプに直接アクセスできることを前提としています(特に)。
所属していません StackOverflow