私は、ファイルにデータを書き込む機能が欲しい:ファイルのようなオブジェクトがあるかどうかはどうすればわかりますか?
def data_writer(data, file_name):
spiffy_data = data # ...
with open(file_name, 'w') as out:
out.write(spiffy_data)
しかし、時には、私が代わりにファイル名のファイルオブジェクトを持っています。この場合、時々tempfile.TemporaryFile
(書き込み可能なファイルのようなオブジェクトを作成する)があります。
私のような何かを書くことができるようにしたいと思います:
def data_writer(data, file_thing):
spiffy_data = data # ...
if type(file_thing) is file_like:
file_thing.write(spiffy_data)
else:
with open(file_name, 'w') as out:
out.write(spiffy_data)
これを行うには良い方法は何ですか?
また、Pythonで行うのは理にかなっていますか?
「isinstance(file_thing、str)」という文字列があるかどうかをチェックするだけです。そうであれば、それをファイル名として扱い、そうでなければファイルのようなオブジェクトとして扱います。 –
いつもファイルのようなものを取っておき、発信者にそれを処理させるのはなぜですか? –
あるいは、いくつかのAPI([例えば 'tarfile.open'](https://docs.python.org/3/library/tarfile.html#tarfile.open))はデフォルトでファイル名を取得しますが、代わりにキーワードで 'fileobj'を使用するので、ファイルを開く代わりにそのファイルを使用します。これが意味をなさないならばあなた次第です。 – ShadowRanger