Python

Python-Tempfile-Modul

Python-Tempfile-Modul
In unseren Programmen müssen wir oft einige temporäre Informationen über den Status des Programms und Objekte speichern, die möglicherweise über den Status des Programms selbst hinausgehen. Die Daten, die in diesen Dateien gespeichert werden, sind möglicherweise nicht in menschenlesbarer Form oder sogar in einer Form, die von jedem verwendet werden kann, aber einige Programme, Algorithmen oder Hacker können einen Weg finden, Informationen aus diesen Daten zu gewinnen, wodurch die Daten geopfert werden können Sicherheit des Systems. Wir müssen also eine Logik erstellen, die diese Dateien erstellt, einige Daten schreiben und dann auch die Dateien löschen. Was wäre, wenn es etwas gäbe, das so viele Operationen in unserem Programm abstrahiert?? Scheint so, als ob es in Python ein Modul dafür gibt, das tempfile Modul.

Beispiele mit tempfile-Modul

Wir beginnen mit einfachen Beispielen mit dem Python tempfile Modul hier.

Temporäre Dateien erstellen

Das erste, was zum Speichern temporärer Daten benötigt wird, sind die Dateien, in denen wir diese Daten speichern können. Dies kann mit dem Temporäre Datei() Funktion. Der größte Vorteil dieser Funktion besteht darin, dass beim Erstellen einer Datei mit dieser Funktion keine Verknüpfungen zu dieser Datei im Dateisystem des Systems hergestellt werden und somit anderen Prozessen kein Zugriff auf diese Dateien möglich ist.

Schauen wir uns ein einfaches Programm an, das die Temporäre Datei() Funktion:

Importieren von OS
tempfile importieren
# PID im Dateinamen zur besseren Identifizierung verwenden
Datei = '/tmp/linuxhint_%s.txt' % os.getpid()
# Bereitstellung des Dateimodus
temp_file = open(file, 'w+b')
Versuchen:
print('temp_file: 0'.format(temp_file))
print('temp_file.Name: 0'.format(temp_file.Name))
schließlich:
temp_datei.schließen()
# Temporäre Datei selbst löschen
os.Datei löschen)
print('Metadaten der temporären Datei:')
temp_file = tempfile.Temporäre Datei()
Versuchen:
print('temp_file: 0'.format(temp_file))
print('temp_file.Name: 0'.format(temp_file.Name))
schließlich:
# Säubert die Datei, wenn close aufgerufen wird
temp_datei.schließen()

Folgendes erhalten wir mit diesem Befehl zurück:

Temporäre Datei erstellen

Diese Datei wird gelöscht, sobald die schließen() Funktion wird auf der aufgerufen tempfile Referenz.

Aus temporärer Datei lesen

Sogar das Lesen aus einer temporären Datei ist einfach und kann in einem einzigen Methodenaufruf im selben Modul durchgeführt werden. Der Vorteil dieser Funktion ist, dass es hilft uns, komplexe IO-Operationen zu vermeiden beteiligt, wenn wir diese Vorgänge manuell ausführen müssen. Hier ist ein Programm, das diese Funktion in Aktion zeigt:

Importieren von OS
tempfile importieren
tempFile = tempfile.Temporäre Datei()
Versuchen:
print('Daten in tempFile schreiben:')
tempDatei.write(b'Alle Daten können hierher kommen.')
tempDatei.suchen(0)
print('Daten aus tempFile lesen: \n\t0'.format(tempFile.lesen()))
schließlich:
tempDatei.schließen()

Sehen wir uns die Ausgabe für diesen Befehl an:

Python aus temporärer Datei lesen

Der gesamte Text in den temporären Dateien wurde mit einem einzigen Methodenaufruf zurückgegeben.

Schreiben von Klartext in temporäre Datei

In unseren oben genannten Programmen lagen nicht alle in Dateien geschriebenen Daten in Form eines einfachen Klartextformats vor. Wenn wir dies für einfache Textoperationen tun möchten, können wir einfach den Dateimodus ändern, wenn wir die temporäre Datei zum Ändern öffnen:

tempfile importieren
fileMode = 'w+t'
mit tempfile.TemporaryFile(mode=fileMode) als Datei:
Datei.writelines(['Linux\n', 'Ubuntu\n'])
Datei.suchen(0)
für Artikel in Datei:
drucken (Artikel.rstrip())

Folgendes erhalten wir mit diesem Befehl zurück:

Einfachen Text in die Datei schreiben

Benannte temporäre Dateien erstellen

Die Dateien, die über mehrere Prozesse verteilt werden müssen, müssen benannt werden, damit ein Prozess sie nicht löscht, wenn er abgeschlossen ist. So können wir eine temporäre benannte Datei erstellen:

Importieren von OS
tempfile importieren
tempFile = tempfile.NamedTemporaryFile()
Versuchen:
print('tempDatei: 0'.format(tempDatei))
print('temp.tempDatei : 0'.format(tempFile.Name))
schließlich:
# Datei auch löschen
tempDatei.schließen()
print('Existiert schon? : 0'.format(os.Pfad.existiert(tempFile.Name)))

Sehen wir uns die Ausgabe für diesen Befehl an:

Benannte tempfile

Wenn wir die Datei nicht löschen, können wir ihre Existenz in einem anderen Programm überprüfen und sie verwenden, wenn sie am angegebenen Ort vorhanden ist exist.

Angeben von Dateinamensuffix und -präfix

Um die Dateien, die zu unseren eigenen Prozessen auf dem Dateisystem gehören, leicht zu identifizieren, können wir dem Dateinamen auch Suffix und Präfix hinzufügen:

tempfile importieren
tempFile = tempfile.NamedTemporaryFile(suffix='_ubuntu',
prefix='linuxhint_',
dir='/tmp',)
Versuchen:
print('tempDatei:', tempDatei)
print('tempFile.name:', tempFile.Name)
schließlich:
tempDatei.schließen()

Folgendes erhalten wir mit diesem Befehl zurück:

Anwenden von Präfix und Suffix auf den Dateinamen

Wir haben der Methode drei Parameter zur Verfügung gestellt, die als Suffix und Präfix für den Dateinamen dienen, der an dem von uns angegebenen Ort erstellt wird.

Fazit

In dieser Lektion haben wir uns angesehen, wie wir das Python-Tempfile-Modul verwenden können, um temporäre Dateien in unserem Code zu verwalten. Lesen Sie hier mehr Python-basierte Beiträge.

Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...
So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...
Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...