Python

Python-tempfile-module

Python-tempfile-module
Vaak moeten we in onze programma's wat tijdelijke informatie opslaan over de staat van het programma en objecten die al dan niet leven buiten de staat van het programma zelf. De gegevens die in deze bestanden worden opgeslagen, zijn misschien niet in de voor mensen leesbare vorm of zelfs in een vorm die door iedereen kan worden gebruikt, maar sommige programma's, algoritmen of hackers kunnen een manier vinden om informatie uit deze gegevens te halen die de beveiliging van het systeem. We moeten dus logica creëren die deze bestanden maakt, wat gegevens schrijven en dan ook de bestanden verwijderen. Wat als er iets was dat zoveel operaties in ons programma abstraheert?? Het lijkt erop dat er een module in Python is voor hetzelfde, de tempfile module.

Voorbeelden met tempfile-module

We beginnen met eenvoudige voorbeelden met de Python tempfile module hier.

Tijdelijke bestanden maken

Het eerste dat nodig is om tijdelijke gegevens op te slaan, zijn de bestanden waarin we deze gegevens kunnen opslaan. Dit kan met behulp van de Tijdelijk bestand() functie. Het grootste voordeel van deze functie is dat wanneer een bestand met deze functie wordt gemaakt, er geen koppelingen naar dit bestand worden gemaakt in het bestandssysteem van het systeem en het dus niet mogelijk is voor andere processen om toegang te krijgen tot deze bestanden.

Laten we eens kijken naar een eenvoudig programma dat gebruik maakt van de Tijdelijk bestand() functie:

importeer os
tijdelijke bestand importeren
# PID gebruiken in bestandsnaam voor betere identificatie
file = '/tmp/linuxhint_%s.txt' % os.getpid()
# Bestandsmodus verstrekken
temp_file = open(bestand, 'w+b')
proberen:
print('temp_file: 0'.formaat (temp_file))
print('temp_file.naam: 0'.format(temp_file.naam))
Tenslotte:
temp_file.dichtbij()
# Tijdelijk bestand zelf verwijderen
os.bestand verwijderen)
print('Tijdelijke bestandsmetadata:')
temp_file = tempfile.Tijdelijk bestand()
proberen:
print('temp_file: 0'.formaat (temp_file))
print('temp_file.naam: 0'.format(temp_file.naam))
Tenslotte:
# Ruimt het bestand op wanneer close wordt aangeroepen
temp_file.dichtbij()

Dit is wat we terugkrijgen met deze opdracht:

Tijdelijk bestand maken

Dit bestand wordt verwijderd zodra de dichtbij() functie wordt aangeroepen op de tempfile referentie.

Lezen uit tijdelijk bestand

Zelfs het lezen van een tijdelijk bestand is eenvoudig en kan worden gedaan in een enkele methodeaanroep in dezelfde module. Het voordeel van deze functie is dat: het helpt ons om complexe IO-bewerkingen te vermijden betrokken als we deze bewerkingen handmatig moeten uitvoeren. Hier is een programma dat deze functie in actie laat zien:

importeer os
tijdelijke bestand importeren
tempFile = tempfile.Tijdelijk bestand()
proberen:
print('Gegevens schrijven naar tempFile:')
tempFile.schrijven (b'Alle gegevens kunnen hier komen.')
tempFile.zoeken(0)
print('Gegevens van tempFile lezen: \n\t0'.formaat(tempFile.lezen()))
Tenslotte:
tempFile.dichtbij()

Laten we de uitvoer voor deze opdracht bekijken:

Python gelezen uit tijdelijk bestand

Alle tekst in de tijdelijke bestanden werd teruggegeven met een enkele methodeaanroep.

Tekst zonder opmaak in tijdelijk bestand schrijven

In onze bovenstaande programma's waren alle gegevens die naar bestanden werden geschreven niet in de vorm van een eenvoudig tekstformaat. Als we dit willen doen voor eenvoudige tekstbewerkingen, kunnen we de bestandsmodus gewoon wijzigen wanneer we het tijdelijke bestand openen voor wijzigingen:

tijdelijke bestand importeren
fileMode = 'w+t'
met tempfile.TemporaryFile(mode=fileMode) als bestand:
het dossier.writelines(['Linux\n', 'Ubuntu\n'])
het dossier.zoeken(0)
voor item in bestand:
print(item).rstrip())

Dit is wat we terugkrijgen met deze opdracht:

Tekst zonder opmaak in het bestand schrijven

Benoemde tijdelijke bestanden maken

De bestanden die over meerdere processen moeten worden verspreid, moeten een naam hebben, zodat een proces ze niet verwijdert wanneer het is voltooid. Hier is hoe we een tijdelijk benoemd bestand kunnen maken:

importeer os
tijdelijke bestand importeren
tempFile = tempfile.NamedTemporaryFile()
proberen:
print('tempFile: 0'.formaat (tempFile))
print('temp.tempFile : 0'.formaat(tempFile.naam))
Tenslotte:
# Ook het bestand verwijderen
tempFile.dichtbij()
print('Bestaat wel? : 0'.formaat (os.pad.bestaat (tempFile.naam)))

Laten we de uitvoer voor deze opdracht bekijken:

Genoemd tempbestand

Als we het bestand niet verwijderen, kunnen we het bestaan ​​ervan in een ander programma controleren en het gebruiken als het op de opgegeven locatie bestaat.

Achtervoegsel en voorvoegsel voor bestandsnaam opgeven

Om gemakkelijk de bestanden te identificeren die tot onze eigen processen op het bestandssysteem behoren, kunnen we ook Suffix en Prefix op de bestandsnaam toepassen:

tijdelijke bestand importeren
tempFile = tempfile.NamedTemporaryFile(suffix='_ubuntu',
prefix='linuxhint_',
dir='/tmp',)
proberen:
print('tempFile:', tempFile)
print('tempFile'.naam:', tempFile.naam)
Tenslotte:
tempFile.dichtbij()

Dit is wat we terugkrijgen met deze opdracht:

Voor- en achtervoegsel toepassen op bestandsnaam

We hebben drie parameters gegeven aan de methode die fungeert als achtervoegsel en voorvoegsel voor de bestandsnaam die zal worden gemaakt op de locatie die we hebben opgegeven.

Conclusie

In deze les hebben we gekeken hoe we de Python-tempfile-module kunnen gebruiken om tijdelijke bestanden in onze code te beheren. Lees hier meer op Python gebaseerde berichten.

OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...
SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...
Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...