2016-05-19 6 views
1

machen haben keine Lösung für dieses Problem durch die Suche bestehende Fragen, hier geht gefunden. Versuchen, eine temporäre Datei mit dem tempfile-Paket zu erstellen. Hier ist die Codezeile, die mit einem ValueError versagt:einen Valueerror bekommen, wenn ein NamedTemporaryFile in Python

(temp_file, self.bucket) = tempfile.NamedTemporaryFile(suffix='.py', prefix='Custom_', dir=[mydir], delete=False)

Ich bekomme diese Valueerror, wenn ich mein Skript ausführen:

ValueError: need more than 0 values to unpack

Warum?

+0

Sidenote (bestehende Antwort deckt das Hauptproblem ab): Haben Sie 'dir = [mydir]' wirklich übergeben, oder soll '[mydir]' ein Platzhalter sein? Du übergibst 'dir' nicht als' liste', was die Klammern tun würden. – ShadowRanger

+0

Das ist nur ein Platzhalter. Ich hatte dort einen gültigen Pfad. :) @ShadowRanger –

Antwort

2

tempfile.NamedTemporaryFile() gibt den Dateinamen nicht zurück, nur das Handle. Sie müssen auf das name-Attribut zugreifen, um den Dateinamen zu erhalten.

+0

Ich verstehe diesen Teil, aber ich denke, was du meinst, ist ich will nicht '(temp_file, self.bucket)' vor der 'tempfile.NamedTemporaryFile()'? Vielleicht nur 'self.bucket' statt dessen? –

+0

Nvm,^das hat mein Problem behoben. Vielen Dank! –

+1

Die Verwirrung liegt wahrscheinlich daran, dass "mkstemp" wiederholt von "TemporaryFile" -Dokumenten erwähnt wird, und "mkstemp" gibt handle und name zurück. Aber 'TemporaryFile' und' NamedTemporaryFile' sind höherstufige Typen, die Rückgabewerte wie 'open' haben, keine Low-Level-APIs wie' mkstemp'. – ShadowRanger

Verwandte Themen