Ich möchte eine Funktion haben, die Daten in eine Datei schreibt:Wie kann ich feststellen, ob ich ein dateiähnliches Objekt habe?
def data_writer(data, file_name):
spiffy_data = data # ...
with open(file_name, 'w') as out:
out.write(spiffy_data)
Aber manchmal, ich habe ein Dateiobjekt anstelle eines Dateinamens. In diesem Fall habe ich manchmal eine tempfile.TemporaryFile
(die ein dateiähnliches Objekt erstellt, das beschreibbar ist).
Ich möchte in der Lage sein, so etwas wie zu schreiben:
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)
Was ist ein guter Weg, dies zu tun?
Macht es auch Sinn, in Python zu tun?
Ich würde nur überprüfen, ob Sie eine Zeichenfolge mit 'isinstance (file_thing, str)' bekommen haben. Wenn dies der Fall ist, behandeln Sie es als Dateinamen, andernfalls behandeln Sie es als dateiähnliches Objekt. –
Warum nicht immer eine Datei-Like und lassen Sie den Anrufer damit umgehen? –
Alternativ dazu verwenden einige APIs ([z. B. 'tarfile.open'] (https://docs.python.org/3/library/tarfile.html#tarfile.open)) standardmäßig einen Dateinamen, erlauben aber die Weitergabe ein 'fileobj' anstatt nach Schlüsselwort, so dass es das verwendet, anstatt eine Datei zu öffnen. Bis zu dir, wenn das Sinn macht. – ShadowRanger