[PYTHON] Was tun, wenn ein PermissionError in tempfile.mkstemp auftritt?

Es ist eine grundlegende Sache, aber da es ein wenig passt, habe ich es als Memorandum aufgenommen

Wenn Sie beim Schreiben eines Tests eine temporäre Datei benötigen, tempfile ) Ist empfohlen.

tempfile.mkstemp () erstellt eine temporäre Datei, aber Sie müssen die Datei selbst löschen. Ich dachte, ich sollte nach dem Dateivorgang "os.remove ()" ausführen, und als Ergebnis des Schreibens und Ausführens kann der Prozess "PermissionError: [WinError 32]" nicht auf die Datei zugreifen. Ein anderer Prozess wird verwendet. : 'C: \ ... [Temporärer Dateipfad] `' ist aufgetreten.

Als Ergebnis des Versuchs verschiedener Dinge, während man denkt, dass die With-Syntax fehlt, scheint es, dass der Prozess zum Zeitpunkt von "tempfile.mkstemp ()" immer noch die Datei erfasst, so dass es notwendig ist, "os.close ()" auszuführen. tat.

Unten finden Sie ein Beispiel für einen Test, der gut funktioniert hat

class MyFileController():
    def __init__(self, path):
        self.path = path
    
    def output(self, data):
        with open(self.path, "a", newline='', encoding='utf_8_sig', errors='ignore') as f:
            f.write(data)   

class TestMyFileController(unittest.TestCase):
    def test_output(self):
        fd, path  = tempfile.mkstemp()
        mcc = MyFileController(path)
        try:
            mcc.output("test")

            with open(path, encoding='utf_8_sig') as f:
                test_data = f.read()
                self.assertEqual(headers, "test")

        finally:
            os.close(fd)          # <--Hier.
            os.remove(path)

Recommended Posts

Was tun, wenn ein PermissionError in tempfile.mkstemp auftritt?
Was tun, wenn Ubuntu abstürzt?
[Python] Was tun, wenn bei send_keys in Headless Chrome ein Fehler auftritt?
Was tun, wenn beim Aktualisieren von conda ein Fehler beim Entfernen auftritt?
[Beanstalk] Was tun, wenn beim Importieren der UUID ein Fehler auftritt?
Was tun, wenn UnicodeDecodeError während read_csv in Pandas auftritt (pd.read_table ())
Was tun, wenn ModuleNotFoundError: In Python tritt kein Modul mit dem Namen 'XXX' auf
Was tun, wenn beim Importieren von numpy mit VScode ein Fehler auftritt?
[OSX] [pyenv] Was tun, wenn in pip ein SSL-Fehler auftritt?
Beispiel, was zu tun ist, wenn das Beispielskript nicht funktioniert (OpenCV-Python)
Was tun, wenn CERTIFICATE_VERIFY_FAILED auftritt, wenn nltk.download () unter macOS pyhon ausgeführt wird?
Was tun, wenn ein SSL-Fehler mit pip in einer Windows10-, Miniconda- oder VScode-Umgebung auftritt?
[Go 1.13] Was tun, wenn ein unerwartetes Verzeichnislayout angezeigt wird?
[openpyxl] Was tun, wenn IllegalCharacterError in pandas.DataFrame.to_excel angezeigt wird?
curl: (60) Was tun, wenn das Ausstellerzertifikat ungültig ist?
Was tun, wenn gdal_merge eine große Datei generiert?
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?
Was tun, wenn "Name xxx nicht importiert werden kann" [Python]
[Python] Typ Fehler: 'WebElement'-Objekt ist nicht iterierbar Was tun, wenn ein Fehler auftritt?
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
Was tun, wenn die PyCharm-Schrift seltsam oder verstümmelt ist?
Was tun, wenn nicht ausrichtbare boolesche Reihen als Indexer bereitgestellt werden?
Was tun, wenn in tf.train.start_queue_runners () ein 0xC0000005-Fehler auftritt?
Was tun, wenn die Paketinstallation bei der Bereitstellung auf heroku fehlschlägt?
Was tun, wenn bei der Installation mit Paketverwaltung von pip, npm, gem ein Kommunikationsfehler aufgrund eines Proxys auftritt?
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
OSError: [Errno 40] Was tun, wenn die Nachricht zu lang erscheint?
Was tun, wenn in Django "Ungültiger HTTP_HOST-Header" angezeigt wird?
ImportError: Kein Modul Was tun, wenn Sie dazu aufgefordert werden?
Was tun, wenn ein nicht in pom.xml definiertes Glas zu einem fehlenden Artefakt wird?
Was tun, wenn in numpy.load () "Objekt-Arrays nicht geladen werden können, wenn allow_pickle = False" auftritt?
Was tun, wenn Yum kaputt geht?
Was tun mit der Installation von Magics?
[AWS] Was tun, wenn der Ping-Befehl eine "Zeitüberschreitung" verursacht?
Was tun, wenn ein Video von cv2.VideoCapture nicht gelesen werden kann?
Was tun, wenn die Einstellungen der jupyterlab-Erweiterung nicht angezeigt werden?
Was tun, wenn beim Ausführen von Python eine Warnung zur unsicheren Plattform angezeigt wird?
Was tun, wenn "Ich kann die Site nicht sehen !!!!"
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Was tun, wenn ein Teil des Hintergrundbilds transparent wird, wenn Sie transparente Bilder mit Pillow kombinieren?
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
Was tun, wenn pyinstaller: error: argument --add-binary: ungültig add_data_or_binary value: angezeigt wird
[Docker] Was tun, wenn ein Fehler aufgetreten ist? Der Binär-Git wurde nicht gefunden
[Python] Was tun, wenn beim Importieren aus dem zu sys.path hinzugefügten Verzeichnis gegen PEP8 verstoßen wird?
Was ist zu tun, wenn "Etwas läuft bereits an Port 8000" angezeigt wird, wenn der Entwicklungsbefehl von Gatsby ausgeführt wird.
[Python] Was tun, wenn ein Fehler im Zusammenhang mit der SSL-Authentifizierung zurückgegeben wird?
[Django] Was tun, wenn beim Registrieren von Daten von der Verwaltungssite in die Datenbank ein Integritätsfehler auftritt?
Was tun, wenn in der Anaconda-Umgebung die Warnung "Die Umgebung ist konsistent ..." angezeigt wird
Hinweise, was zu tun ist, wenn das Löschen von Schatten nicht mit Scatter () / Scatter3d () von Matplotlib funktioniert
Was tun nach der Installation von Linux (Ubuntu)
Lassen Sie uns zusammenfassen, was Sie tun möchten.
Was tun, wenn psycopg2 einen Fehler auslöst, wenn pipenv in einer Pipenv-Umgebung gesperrt wird?
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?
Was tun, wenn beim Laden eines mit Poesie erstellten Python-Projekts in VS Code ein Fehler auftritt?