Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python Bestands I/O: In- en uitvoerbewerkingen onder de knie krijgen

Dit hoofdstuk behandelt alle basale I/O-functies die beschikbaar zijn in Python. Voor meer functies, raadpleeg de standaard Python-documentatie.

Afprinten naar het scherm

De eenvoudigste manier om output te produceren is het gebruik van de print-instructie waar je nul of meer expressies, gescheiden door komma's, kunt doorgeven. Deze functie converteert de expressies die je doorgeeft naar een string en schrijft het resultaat naar de standaarduitvoer als volgt:

#!/usr/bin/python
print("Python is echt een geweldige taal,", "is het niet?")

Dit produceert het volgende resultaat op je standaardscherm:

Python is echt een geweldige taal, is het niet?

Toetsenbordinvoer lezen

Python biedt twee ingebouwde functies om een regel tekst van de standaardinvoer te lezen, die standaard van het toetsenbord komt. Deze functies zijn:

  • raw_input
  • input

De raw_input-functie

De raw_input([prompt])-functie leest één regel van de standaardinvoer en retourneert deze als een string (de trailing newline wordt verwijderd).

#!/usr/bin/python
str = raw_input("Voer je invoer in: ")
print("Ontvangen invoer is : ", str)

Dit vraagt je om een willekeurige string in te voeren en zou dezelfde string op het scherm tonen. Toen ik "Hello Python!" intikte, was de output als volgt:

Voer je invoer in: Hello Python
Ontvangen invoer is : Hello Python

De input-functie

De input([prompt])-functie is equivalent aan raw_input, behalve dat het ervan uitgaat dat de invoer een geldige Python-expressie is en het geëvalueerde resultaat aan je retourneert.

#!/usr/bin/python
str = input("Voer je invoer in: ")
print("Ontvangen invoer is : ", str)

Dit zou het volgende resultaat produceren tegen de ingevoerde input:

Voer je invoer in: [x*5 for x in range(2,10,2)]
Ontvangen invoer is : [10, 20, 30, 40]

Bestanden openen en sluiten

Tot nu toe heb je gelezen en geschreven naar de standaardinvoer en -uitvoer. Nu zullen we zien hoe je echte data-bestanden kunt gebruiken.

Python biedt standaard basisfuncties en methoden die nodig zijn om bestanden te manipuleren. Je kunt de meeste bestandsmanipulatie uitvoeren met behulp van een file-object.

De open-functie

Voordat je een kunt lezen of schrijven, moet je het openen met behulp van Python's ingebouwde open()-functie. Deze functie creëert een file-object, dat vervolgens gebruikt wordt om andere ondersteuningsmethoden aan te roepen die eraan gekoppeld zijn.

Syntaxis

file_object = open(bestandsnaam [, toegang_modus][, buffering])

Hier zijn de parameterdetails:

  • bestandsnaam − Het bestandsnaam-argument is een string-waarde die de naam van het bestand bevat dat je wilt benaderen.

  • toegang_modus − De toegang_modus bepaalt de modus waarin het bestand geopend moet worden, namelijk lezen, schrijven, toevoegen, enz. Een complete lijst met mogelijke waarden staat in de onderstaande tabel. Dit is een optionele parameter en de standaard bestands-toegangsmodus is lezen (r).

  • buffering − Als de buffering-waarde op 0 staat, vindt er geen buffering plaats. Als de buffering-waarde 1 is, wordt regel-buffering uitgevoerd tijdens het benaderen van een bestand. Als je de buffering-waarde als een integer groter dan 1 opgeeft, wordt de buffering-actie uitgevoerd met de aangegeven buffergrootte. Als negatief, is de buffergrootte de systeemstandaard (standaardgedrag).

Hier is een lijst van de verschillende modi voor het openen van een bestand:

Nr. Modi & Beschrijving
1

r

Opent een bestand alleen voor lezen. De bestandspointer wordt aan het begin van het bestand geplaatst. Dit is de standaardmodus.

2

rb

Opent een bestand alleen voor lezen in binair formaat. De bestandspointer wordt aan het begin van het bestand geplaatst. Dit is de standaardmodus.

3

r+

Opent een bestand voor zowel lezen als schrijven. De bestandspointer wordt aan het begin van het bestand geplaatst.

4

rb+

Opent een bestand voor zowel lezen als schrijven in binair formaat. De bestandspointer wordt aan het begin van het bestand geplaatst.

5

w

Opent een bestand alleen voor schrijven. Overschrijft het bestand als het bestaat. Als het bestand niet bestaat, wordt er een nieuw bestand voor schrijven aangemaakt.

6

wb

Opent een bestand alleen voor schrijven in binair formaat. Overschrijft het bestand als het bestaat. Als het bestand niet bestaat, wordt er een nieuw bestand voor schrijven aangemaakt.

7

w+

Opent een bestand voor zowel schrijven als lezen. Overschrijft het bestaande bestand als het bestaat. Als het bestand niet bestaat, wordt er een nieuw bestand voor lezen en schrijven aangemaakt.

8

wb+

Opent een bestand voor zowel schrijven als lezen in binair formaat. Overschrijft het bestaande bestand als het bestaat. Als het bestand niet bestaat, wordt er een nieuw bestand voor lezen en schrijven aangemaakt.

9

a

Opent een bestand voor toevoegen. De bestandspointer is aan het einde van het bestand als het bestand bestaat. Dat wil zeggen, het bestand is in de toevoegmodus. Als het bestand niet bestaat, wordt er een nieuw bestand voor schrijven aangemaakt.

10

ab

Opent een bestand voor toevoegen in binair formaat. De bestandspointer is aan het einde van het bestand als het bestand bestaat. Dat wil zeggen, het bestand is in de toevoegmodus. Als het bestand niet bestaat, wordt er een nieuw bestand voor schrijven aangemaakt.

11

a+

Opent een bestand voor zowel toevoegen als lezen. De bestandspointer is aan het einde van het bestand als het bestand bestaat. Het bestand opent in de toevoegmodus. Als het bestand niet bestaat, wordt er een nieuw bestand voor lezen en schrijven aangemaakt.

12

ab+

Opent een bestand voor zowel toevoegen als lezen in binair formaat. De bestandspointer is aan het einde van het bestand als het bestand bestaat. Het bestand opent in de toevoegmodus. Als het bestand niet bestaat, wordt er een nieuw bestand voor lezen en schrijven aangemaakt.

De file-objectattributen

Eenmaal een bestand geopend en je hebt een file-object, kun je diverse informatie met betrekking tot dat bestand verkrijgen.

Hier is een lijst van alle attributen gerelateerd aan het file-object:

Nr. Attribuut & Beschrijving
1

file.closed

Retourneert true als het bestand gesloten is, false anders.

2

file.mode

Retourneert de toegang_modus waarmee het bestand geopend werd.

3

file.name

Retourneert de naam van het bestand.

4

file.softspace

Retourneert false als spatie expliciet vereist is met print, true anders.

Voorbeeld

#!/usr/bin/python
# Open een bestand
fo = open("foo.txt", "wb")
print("Naam van het bestand: ", fo.name)
print("Gesloten of niet : ", fo.closed)
print("Openmodus : ", fo.mode)
print("Softspace vlag : ", fo.softspace)

Dit produceert het volgende resultaat:

Naam van het bestand: foo.txt
Gesloten of niet : False
Openmodus : wb
Softspace vlag : 0

De close()-methode

De close()-methode van een file-object flushed eventuele ongeschreven informatie en sluit het file-object, waarna niet meer geschreven kan worden.

Python sluit automatisch een bestand wanneer het referentieobject van een bestand aan een ander bestand wordt toegekend. Het is een goede gewoonte om de close()-methode te gebruiken om een bestand te sluiten.

Syntaxis

fileObject.close()

Voorbeeld

#!/usr/bin/python
# Open een bestand
fo = open("foo.txt", "wb")
print("Naam van het bestand: ", fo.name)
# Sluit geopend bestand
fo.close()

Dit produceert het volgende resultaat:

Naam van het bestand: foo.txt

Bestanden lezen en schrijven

Het file-object biedt een set toegangsmethoden om ons leven gemakkelijker te maken. We zullen zien hoe we de read()- en write()-methoden gebruiken om bestanden te lezen en te schrijven.

De write()-methode

De write()-methode schrijft elke string naar een open bestand. Het is belangrijk om te weten dat Python-strings binaire data kunnen bevatten en niet alleen tekst.

De write()-methode voegt geen newline-teken ('\n') toe aan het einde van de string:

Syntaxis

fileObject.write(string)

Hier is de doorgegeven parameter de inhoud die in het geopende bestand geschreven moet worden.

Voorbeeld

#!/usr/bin/python
# Open een bestand
fo = open("foo.txt", "wb")
fo.write("Python is een geweldige taal.\nYeah its great!!\n")
# Sluit geopend bestand
fo.close()

De bovenstaande methode zou het foo.txt-bestand aanmaken en de gegeven inhoud in dat bestand schrijven en ten slotte dat bestand sluiten. Als je dit bestand opent, zou het de volgende inhoud hebben.

Python is een geweldige taal.
Yeah its great!!

De read()-methode

De read()-methode leest een string van een open bestand. Het is belangrijk om te weten dat Python-strings binaire data kunnen bevatten, naast tekstdata.

Syntaxis

fileObject.read([count])

Hier is de doorgegeven parameter het aantal bytes dat uit het geopende bestand gelezen moet worden. Deze methode begint met lezen vanaf het begin van het bestand en als count ontbreekt, probeert het zoveel mogelijk te lezen, misschien tot het einde van het bestand.

Voorbeeld

Laten we een bestand foo.txt nemen, dat we hierboven hebben aangemaakt.

#!/usr/bin/python
# Open een bestand
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Gelezen String is : ", str)
# Sluit geopend bestand
fo.close()

Dit produceert het volgende resultaat:

Gelezen String is : Python is

Bestandsposities

De tell()-methode vertelt je de huidige positie binnen het bestand; met andere woorden, de volgende lees- of schrijfoperatie zal op zoveel bytes vanaf het begin van het bestand plaatsvinden.

De seek(offset[, from])-methode verandert de huidige bestandspositie. Het offset-argument geeft het aantal bytes aan dat verplaatst moet worden. Het from-argument specificeert de referentiepositie waarvandaan de bytes verplaatst moeten worden.

Als from op 0 staat, betekent dit dat het begin van het bestand als referentiepositie gebruikt wordt en 1 betekent dat de huidige positie als referentiepositie gebruikt wordt en als het op 2 staat, dan wordt het einde van het bestand als referentiepositie genomen.

Voorbeeld

Laten we een bestand foo.txt nemen, dat we hierboven hebben aangemaakt.

#!/usr/bin/python
# Open een bestand
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Gelezen String is : ", str)
# Controleer huidige positie
positie = fo.tell()
print("Huidige bestandspositie : ", positie)
# Herpositioneer pointer aan het begin nogmaals
positie = fo.seek(0, 0)
str = fo.read(10)
print("Opnieuw gelezen String is : ", str)
# Sluit geopend bestand
fo.close()

Dit produceert het volgende resultaat:

Gelezen String is : Python is
Huidige bestandspositie : 10
Opnieuw gelezen String is : Python is

Bestanden hernoemen en verwijderen

Python os-module biedt methoden die je helpen bij bestandsverwerkingsoperaties, zoals hernoemen en verwijderen van bestanden.

Om deze module te gebruiken, moet je het eerst importeren en dan kun je elke gerelateerde functie aanroepen.

De rename()-methode

De rename()-methode neemt twee argumenten: de huidige bestandsnaam en de nieuwe bestandsnaam.

Syntaxis

os.rename(huidige_bestaandsnaam, nieuwe_bestaandsnaam)

Voorbeeld

Hieronder volgt het voorbeeld om een bestaand bestand test1.txt te hernoemen:

#!/usr/bin/python
import os
# Hernoem een bestand van test1.txt naar test2.txt
os.rename("test1.txt", "test2.txt")

De remove()-methode

Je kunt de remove()-methode gebruiken om bestanden te verwijderen door de naam van het te verwijderen bestand als argument door te geven.

Syntaxis

os.remove(bestandsnaam)

Voorbeeld

Hieronder volgt het voorbeeld om een bestaand bestand test2.txt te verwijderen:

#!/usr/bin/python
import os
# Verwijder bestand test2.txt
os.remove("test2.txt")

Mappen in Python

Alle bestanden zijn in diverse mappen opgenomen, en Python heeft geen probleem deze te verwerken. De os-module heeft verschillende methoden die je helpen mappen aan te maken, te verwijderen en te wijzigen.

De mkdir()-methode

Je kunt de mkdir()-methode van de os-module gebruiken om mappen in de huidige map aan te maken. Je moet een argument aan deze methode doorgeven dat de naam van de aan te maken map bevat.

Syntaxis

os.mkdir("nieuwedir")

Voorbeeld

Hieronder volgt het voorbeeld om een map test in de huidige map aan te maken:

#!/usr/bin/python
import os
# Maak een map "test" aan
os.mkdir("test")

De chdir()-methode

Je kunt de chdir()-methode gebruiken om de huidige map te wijzigen. De chdir()-methode neemt een argument, namelijk de naam van de map die je de huidige map wilt maken.

Syntaxis

os.chdir("nieuwedir")

Voorbeeld

Hieronder volgt het voorbeeld om naar de "/home/nieuwedir" map te gaan:

#!/usr/bin/python
import os
# Wijzig map naar "/home/nieuwedir"
os.chdir("/home/nieuwedir")

De getcwd()-methode

De getcwd()-methode toont de huidige werkmap.

Syntaxis

os.getcwd()

Voorbeeld

Hieronder volgt het voorbeeld om de huidige map te geven:

#!/usr/bin/python
import os
# Dit zou de locatie van de huidige map geven
os.getcwd()

De rmdir()-methode

De rmdir()-methode verwijdert de map die als argument in de methode wordt doorgegeven.

Voordat je een map verwijdert, moeten alle inhoud erin verwijderd zijn.

Syntaxis

os.rmdir('dirnaam')

Voorbeeld

Hieronder volgt het voorbeeld om de "/tmp/test" map te verwijderen. Het is vereist om de volledig gekwalificeerde naam van de map te geven, anders zou het naar die map in de huidige map zoeken.

#!/usr/bin/python
import os
# Dit zou de "/tmp/test" map verwijderen.
os.rmdir("/tmp/test")

Bestands- & Mapgerelateerde methoden

Er zijn drie belangrijke bronnen die een breed scala aan hulpmethoden bieden om bestanden & mappen op Windows en Unix-besturingssystemen te verwerken en manipuleren. Zij zijn als volgt:

  • Bestandsobjectmethoden: Het file-object biedt functies om bestanden te manipuleren.

  • OS-objectmethoden: Dit biedt methoden om zowel bestanden als mappen te verwerken.

Python

  1. Wat Is Een Schruif? Uw Complete Gids voor Het Essentiële Hout- en Metaalbewerkingsgereedschap
  2. C Input en Output (I/O) Beheersen: scanf() en printf() Uitgelegd
  3. C Bestandsbehandeling: I/O onder de knie krijgen met fopen, fprintf, fread en fseek
  4. Bestands-I/O in C: Bestanden aanmaken, openen, lezen en schrijven
  5. C Header-bestanden begrijpen: Typen, gebruik en best practices
  6. File I/O in C++ Beheersen: Lezen en Schrijven met fstream
  7. C# Bestands-I/O Beheersen: Lezen, Schrijven en Streams Beheren
  8. Python I/O en Module Imports onder de knie krijgen: Een praktische gids
  9. Python-bestands-I/O: bestandsbewerkingen, lezen, schrijven en beheer beheersen
  10. Python-directory en bestandsbewerkingen beheersen
  11. Bestands- en directory-bestaat controleren in Python – Een praktische gids