Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie, wie Sie temporäre Python-Dateien richtig verwenden

Erfahren Sie, wie Sie temporäre Python-Dateien richtig verwenden

coldplay.xixi
coldplay.xixinach vorne
2021-03-29 10:57:102507Durchsuche

Erfahren Sie, wie Sie temporäre Python-Dateien richtig verwenden

1. Einführung

Temporäre Dateien werden normalerweise zum Speichern von Daten verwendet, die nicht im Speicher gespeichert oder an externe Programme übergeben werden können, die aus der Datei lesen müssen. Im Allgemeinen generieren wir einen eindeutigen Dateinamen im Verzeichnis /tmp, aber das sichere Erstellen temporärer Dateien ist nicht so einfach und erfordert viele Regeln. Versuchen Sie niemals, dies selbst zu tun, sondern nutzen Sie stattdessen Bibliotheksfunktionen. Achten Sie auch darauf, temporäre Dateien zu bereinigen.

Das größte durch temporäre Dateien verursachte Problem besteht darin, dass der Dateiname vorhergesagt werden kann, sodass böswillige Benutzer den temporären Dateinamen vorhersagen und Softlinks erstellen können, um die temporäre Datei zu kapern.

Verwandte kostenlose Lernempfehlungen: Python-Video-Tutorial

2. Einführung in das Tempfile-Modul

Das häufig verwendete Modul zum Erstellen temporärer Dateien ist Tempfile. Die häufig verwendeten Modulbibliotheksfunktionen sind wie folgt:

  • tempfile.mktemp # Unsicher, Verwendung verboten
  • tempfile.mktemp # Die standardmäßig erstellten tmp-Dateien befinden sich natürlich auch im Verzeichnis /tmp
  • tempfile.TemporaryFile # Dateien im Speicher erstellen, Dateien Es wird nicht auf der Festplatte gespeichert und nach dem Schließen gelöscht (kann verwendet werden)
  • tempfile.NamedTemporaryFile(delete=True) Wenn delete=True, ist der Effekt derselbe wie Wenn es „Falsch“ ist, wird es auf der Festplatte gespeichert (kann verwendet werden)

3. Beispieleinführung: Die folgenden Methoden stellen sichere und unsichere Methoden zum Erstellen temporärer Dateien vor.

3.1 Falsches Beispiel:

Falsch 1:

import os
import tempfile
 
# This will most certainly put you at risk
tmp = os.path.join(tempfile.gettempdir(), filename)
if not os.path.exists(tmp):
    with open(tmp, "w") file:
        file.write("defaults")
Falsch 2:

import os
import tempfile
 
open(tempfile.mktemp(), "w")
Falsch 3:

filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid())
open(filename, "w")
3.2 Richtiges Beispiel

Richtig 1:

fd, path = tempfile.mkstemp()
try:
    with os.fdopen(fd, 'w') as tmp:
        # do stuff with temp file
        tmp.write('stuff')
finally:
    os.remove(path)
Richtig 2:

# 句柄关闭,文件即删除
with tempfile.TemporaryFile() as tmp:
    # Do stuff with tmp
    tmp.write('stuff')
Richtig 3:

tmp = tempfile.NamedTemporaryFile(delete=True)
try:
    # do stuff with temp
    tmp.write('stuff')
finally:
    tmp.close()  # 文件关闭即删除
Verwandte kostenlose Lernempfehlungen:

Python-Tutorial (Video)

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie temporäre Python-Dateien richtig verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen