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: bestandsbewerkingen, lezen, schrijven en beheer beheersen

Python-bestands-I/O

Leer hoe je bestanden in Python opent, leest, schrijft en sluit met duidelijke voorbeelden en best-practice technieken.

Video: Bestanden lezen en schrijven in Python

Bestanden

Bestanden zijn benoemde locaties op schijf die data persistent opslaan. Omdat RAM vluchtig is, vertrouwen we op bestanden om informatie tussen programma-uitvoeringen te bewaren.

Bij interactie met een bestand is de typische volgorde: openen → lezen/schrijven → sluiten.


Bestanden openen in Python

Python's ingebouwde open()-functie retourneert een bestandsobject voor I/O-bewerkingen. De handtekening is:

open(bestand, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Belangrijke punten:

  • mode controleert de operatie: r (lezen), w (schrijven, truncateert), a (toevoegen), x (exclusief aanmaken).
  • t (tekst) is standaard; b (binair) retourneert bytes-objecten.
  • + staat simultaan lezen en schrijven toe.
  • Specificeer altijd encoding bij tekstbestanden om platform-afhankelijke standaarden te vermijden (bijv. cp1252 op Windows, utf-8 op Linux).
ModusBeschrijving
rLezen (standaard)
wSchrijven; nieuw aanmaken of bestaand truncaten
xExclusief aanmaken; faalt als bestand bestaat
aToevoegen; aanmaken als ontbrekend
tTekstmodus (standaard)
bBinaire modus
+Lezen en schrijven
f = open("test.txt")           # r/rt
f = open("test.txt", "w")      # schrijven
f = open("img.bmp", "r+b")     # lezen/schrijven binair

Omdat a een karakter is, is het niet gelijk aan 97 tenzij geëncodeerd. Stel expliciet encoding='utf-8' in voor tekstbestanden.

f = open("test.txt", mode='r', encoding='utf-8')

Bestanden sluiten in Python

Correct sluiten van een bestand vrijwaart systeembronnen. De close()-methode is eenvoudig, maar een context manager is het veiligste patroon.

with open("test.txt", encoding='utf-8') as f:
    # bestandsbewerkingen uitvoeren
    pass

De context manager garandeert sluiting zelfs als een exception optreedt. Als je handmatig opent, wrap het in een try...finally-blok.

try:
    f = open("test.txt", encoding='utf-8')
    # bewerkingen
finally:
    f.close()

Naar bestanden schrijven in Python

Gebruik w, a of x modus om te schrijven. w overschrijft bestaande inhoud; a behoudt het.

De write()-methode accepteert een string (of bytes voor binair) en retourneert het aantal geschreven karakters.

with open("test.txt", "w", encoding='utf-8') as f:
    f.write("mijn eerste bestand\n")
    f.write("Dit bestand\n\n")
    f.write("bevat drie regels\n")

Vergeet niet newline-karakters op te nemen om regels te scheiden.


Bestanden lezen in Python

Open met r modus. De read()-methode accepteert een optioneel size-argument; weglaten leest tot EOF.

f = open("test.txt", "r", encoding='utf-8')
print(f.read(4))  # 'Dit '
print(f.read(4))  # 'is '
print(f.read())   # resterende inhoud
f.close()

Verplaats de cursor met seek() en vraag de positie op met tell():

print(f.tell())  # huidige positie
f.seek(0)        # terug naar begin
print(f.read())  # alles lezen

Efficiënt itereren over regels:

for regel in f:
    print(regel, end='')

Alternatief bieden readline() en readlines() regel-voor-regel toegang.


Python-bestandsmethoden

Hieronder een beknopt overzicht van de meest voorkomende bestandsmethoden in tekstmodus.

MethodeBeschrijving
close()Sluit het bestand.
detach()Los de onderliggende binaire buffer los.
fileno()Retourneert het bestandsdescriptor.
flush()Flush de schrijfbuffer.
isatty()Controleer of de stream interactief is.
read(n)Lees tot n karakters; None leest tot EOF.
readable()Is de stream leesbaar?
readline(n=-1)Lees een enkele regel, tot n karakters.
readlines(n=-1)Retourneert lijst van regels, tot n karakters.
seek(offset, from_=SEEK_SET)Verplaats cursor naar offset vanaf from_ (start, huidig, einde).
seekable()Kan de stream random access ondersteunen?
tell()Haal huidige cursorpositie op.
truncate(size=None)Wijzig bestandsgrootte naar size bytes.
writable()Is de stream schrijfbaar?
write(s)Schrijf string s; retourneert aantal geschreven karakters.
writelines(lines)Schrijf een iterable van strings.

Python

  1. C Input en Output (I/O) Beheersen: scanf() en printf() Uitgelegd
  2. Bestands-I/O in C: Bestanden aanmaken, openen, lezen en schrijven
  3. C# Bestands-I/O Beheersen: Lezen, Schrijven en Streams Beheren
  4. Python Datatypes onder de knie krijgen: Een praktische gids
  5. Python Operators onder de knie krijgen: Een uitgebreide gids
  6. Python-lijstbewerkingen: aanmaken, benaderen, wijzigen en geavanceerde technieken
  7. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  8. Python-bestands-I/O: bestandsbewerkingen, lezen, schrijven en beheer beheersen
  9. Bestands- en directory-bestaat controleren in Python – Een praktische gids
  10. Python JSON: Encoding, Decoding en Bestandsafhandeling – Een Praktische Gids
  11. Python Bestands I/O: In- en uitvoerbewerkingen onder de knie krijgen