ich habe ein kleines Problem mit einer Temp-Datei. Ich erzeuge ein Tempfile, befülle dies mit Inhalt, speichere mir den Dateinamen und schließe die Datei.
Danach verwende ich die Datei als Inputdatei in einem anderen Programm, welches mittels Subprocess ausgeführt wird. Bis dahin läuft alles wunderbar.
Jedoch würde ich gern die Datei nach erfolgreicher Abarbeitung mit dem anderen Programm wieder löschen. Jedoch bekomme ich dann untenstehende Fehlermeldung.
Code: Alles auswählen
def f_deltempfile(datei):
befehl = 'more ' + datei
prozess = subprocess.Popen(befehl, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(std_ausgabe, std_fehler) = prozess.communicate()
if (std_ausgabe):
print std_ausgabe
if (std_fehler):
print std_fehler
try:
os.remove(datei)
except WindowsError, err:
print 'Fehler:',err
Code: Alles auswählen
import tempfile
import subprozess
file = tempfile.mkstemp(suffix='.j', prefix='foo_', dir=os.getcwd(),text=True)
journalfile = open(file[1],'wb+')
journalfile.write('4\n')
journalfile.write('3\n')
journalfile.write('2\n')
journalfile.write('1\n')
filename = journalfile.name
journalfile.close()
Code: Alles auswählen
f_deltempfile(filename)
4
3
2
1
Fehler: [Error 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird: 'D:\\Temp\\foo_21ua5o.j'
Der Rest läuft alles sauber, nur das löschen der Datei schlägt fehl.
bin dankbar für jeden Tipp, sowie für eine Erklärung, woher dieser Fehler kommt.
Gruß,
Steffen