2014-04-22 5 views
14

Ich versuche, mit Python eine temporäre Datei unter Windows zu erstellen und in eine temporäre Datei zu schreiben. Ich habe das Python-Modul tempfile verwendet, um eine temporäre Datei zu erstellen.Berechtigung zum Schreiben in meine temporäre Datei verweigert

Aber wenn ich gehe, um diese temporäre Datei zu schreiben, erhalte ich einen Fehler Permission Denied. Darf ich nicht in temporäre Dateien schreiben ?! Mache ich etwas falsch? Wenn ich eine temporäre Datei erstellen und in eine temporäre Datei schreiben möchte, wie soll ich das in Python machen? Ich möchte eine temporäre Datei im Temp-Verzeichnis für Sicherheitszwecke und nicht lokal (in dem Verzeichnis, in dem die .exe ausgeführt wird) erstellen.

IOError: [Errno 13] Permission denied: 'c:\\users\\blah~1\\appdata\\local\\temp\\tmpiwz8qw'

temp = tempfile.NamedTemporaryFile().name 
f = open(temp, 'w') # error occurs on this line 

Antwort

20

NamedTemporaryFile tatsächlich schafft die Datei für Sie, es gibt keine Notwendigkeit für Sie es für das Schreiben zu öffnen.

In der Tat, die Python docs Zustand:

Ob der Name der Datei ein zweites Mal zu öffnen, verwendet werden können, während die genannte temporäre Datei noch geöffnet ist, variiert zwischen verschiedenen Plattformen (es so verwendet werden Unix; kann nicht unter Windows NT oder höher).

Deshalb erhalten Sie Ihre Erlaubnis Fehler. Was Sie wahrscheinlich nach sind ist:

f = tempfile.NamedTemporaryFile(mode='w') # open file 
temp = f.name        # get name (if needed) 
+0

Es gibt eine nützliche Klarstellung und weitere Informationen in diesem Beitrag http://stackoverflow.com/questions/4290716/how-to-write-bytes-to-a-file- In-Python-3-ohne-zu-wissen-die-Codierung –

Verwandte Themen