Voici mon exemple de code:Impossible de supprimer un fichier créé par `tempfile.mkstemp()` sur Windows
import os
from tempfile import mkstemp
fname = mkstemp(suffix='.txt', text=True)[1]
os.remove(fname)
Quand je lance sur mon Linux, il fonctionne très bien. Mais quand je le lance sur mon Windows XP en utilisant Python 3.4.4, il a soulevé l'erreur suivante:
Traceback (most recent call last):
File "C:\1.py", line 5, in <module>
os.remove(fname)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\DOCUME~1\\IEUser\\LOCALS~1\\Temp\\tmp3qv6ppcf.txt'
Cependant, lorsque j'utilise tempfile.NamedTemporaryFile()
pour créer un fichier temporaire et fermez-le, il automatiquement supprimé. Pourquoi Windows ne peut pas supprimer les fichiers créés par mkstemp
?
Pourquoi Windows ne peut pas supprimer les fichiers créés par mkstemp
? Où est-ce que je fais mal?
Avez-vous essayé de le fermer en premier? –
@ IgnacioVazquez-Abrams: Hein? Où l'ai-je ouvert? Est-ce que 'mkstemp()' ne crée pas le fichier? Il n'y a pas de 'open()' dans mon code et 'fname' est un objet chaîne. –
Notez que mkstemp() renvoie un ** tuple ** avec un descripteur de fichier ouvert. Tant que vous ne fermez pas ce handle, le fichier est utilisé (... par un autre processus: le vôtre). Il fonctionne sous Windows à cause du fonctionnement de os.remove() sur Windows, en essayant de supprimer un fichier en cours d'utilisation, une exception est levée, sur Unix, l'entrée du répertoire est supprimée mais le stockage alloué au fichier n'est pas rendu disponible jusqu'à ce que le fichier original ne soit plus utilisé_). –