Fájlok kezelése Pythonban

Minden programozási nyelvben a fájlkezelés fontos szempont. A Python emellett támogatja a fájlokkal való munkavégzést különböző módokban – például fájlok olvasása és írása stb.

Az oktatóanyag végére a következőkre lesz képes:

  • fájlok megnyitása és olvasása Pythonban,
  • sorokat olvasni szöveges fájlból,
  • írjon és csatoljon fájlokhoz, és
  • környezetkezelőket használjon a Pythonban lévő fájlokkal való munkavégzéshez.

Hogyan olvassunk fájlokat Pythonban

Egy fájl Pythonban való megnyitásához használhatja az általános szintaxist: open(‘file_name’,’mode’).

  • Itt a file_name a fájl neve.

Megjegyzés: Ha a megnyitni kívánt fájl az aktuális munkakönyvtárban található, csak a fájl nevét említheti meg. Ha a munkakörnyezet egy másik mappájában található, akkor adja meg a fájl elérési útját.

  • A paraméter mód megadja azt a módot, amelyben meg kívánja nyitni a fájlt.

A fájl megnyitásának alapértelmezett módja az olvasás – „r” betűvel jelölve. Mindazonáltal ajánlatos a módot kifejezetten megadni.

Mielőtt elkezdené, vessünk egy pillantást a lib.txt fájlra, amelyet ebben a példában fogunk használni.

📁 Töltse le az oktatóanyagban használt szövegfájlt és kódot innen ezt a GitHub repót.

Az alábbi kódrészlet bemutatja, hogyan lehet megnyitni a „lib.txt” szövegfájlt Pythonban az open() függvény segítségével, és elolvasni a tartalmát.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

A fenti példában

  • Az open() függvény egy fájl objektumot ad vissza, és mi úgy döntjük, hogy fájlnak nevezzük.
  • Ezután meghívjuk a read() metódust a fájlban.
  • A tartalom változó most a fájl tartalmát tartalmazza. És kinyomtatjuk.
  • Végül bezárjuk a fájlt.

Ha azonban elfelejti bezárni a fájlt, erőforráspazarlás lehetséges. Ha sok ilyen fájllal dolgozik, akkor jelentős memóriahasználatot okozhat. Ennek az az oka, hogy több fájlt megnyitott, de egyiket sem zárta be.

  A chmod parancs használata Linuxon

Most pedig tanuljunk meg egy jobb módszert a fájlok megnyitására kontextuskezelők. Az alábbi kódrészlet bemutatja, hogyan használhatja őket.

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Ha kapcsolatkezelőket használ a fájlokkal való munkavégzéshez, nem kell a close() metódust használnia. A fájlok automatikusan bezáródnak az I/O művelet befejezése után.

Sorok olvasása fájlból Pythonban

A minta szövegfájlunkban csak néhány sor volt. Így az összes fájl tartalmának egyidejű beolvasása nem jelentett problémát.

Ha azonban nagy fájlokat kell olvasnia, a read() metódus használata, amint az fent látható, nem biztos, hogy túl hatékony.

Valójában, ha a szövegfájl nagyon nagy méretű, hamarosan elfogyhat a memória. Ezért érdemes lehet csak olvasható sorokat olvasni egy szöveges fájlból, és ebben a részben megtudhatja, hogyan kell ezt megtenni.

A Python readline() módszerének használata sorok olvasásához fájlból

A readline() metódus egyszerre egy sort olvas be a fájlból.

Futtassa a következő kódrészletet.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Látható, hogy az első readline() metódushívás után a fájl első sora kerül kinyomtatásra. A readline() metódus második hívása pedig a fájl második sorát adja vissza.

Ennek az az oka, hogy az első metódushívás után a fájlmutató a második sor elején van.

A Pythonban a tell() metódus segítségével lekérheti a fájlmutató aktuális helyét. Ha pedig a fájlmutatót egy adott helyre mozgatja, használhatja a seek() metódust.

Az alábbi kódrészletben az f.seek(0)-t használjuk az első metódushívás után. Ezzel a fájlmutatót a szövegfájl elejére mozgatja. Ez az oka annak, hogy mindkét alkalommal a fájl első sora kerül kinyomtatásra.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

A Python readlines() módszerének használata sorok olvasásához fájlból

Van egy másik, szorosan kapcsolódó módszer, a readlines().

Amikor futtatja a következő kódrészletet, látni fogja, hogy a readlines() metódus visszaadja a fájl összes sorának listáját.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!n', 'Here are a few helpful Python libraries:n', 
'1) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', 'n']

Python for Loop használata sorok olvasásához fájlból

A szövegfájl sorainak beolvasásához használhatja a for ciklust is.

  Szabadítson fel helyet az Androidon a nem kívánt alkalmazások és az ismétlődő fotók eltávolításával

Ha rendelkezik egy fájlobjektummal, a for ciklus segítségével ismételheti a fájl tartalmát – soronként, és kinyomtathatja azokat, az alábbiak szerint. Figyeljük meg, hogy egyszerre csak egy sort érünk el, és nem olvassuk be a teljes fájl tartalmát.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Megjegyzés: A Python print() függvényének használatakor az alapértelmezett elválasztó egy újsor – „n” karakter. De az eredeti fájlban nincsenek meg ezek az új sorok. Tehát állítsa be az elválasztó argumentumot egy üres karakterláncra: end = ” annak érdekében, hogy a fájl tartalma úgy kerüljön kinyomtatásra, ahogy van.

Hogyan lehet tartalomdarabokat olvasni a fájlból a Pythonban

A Pythonban azt is választhatja, hogy kis darabokban olvassa be a fájl tartalmát.

Olvassa el az alábbi kódot:

  • Itt a chunk_size-t 50-re állítjuk. Ez azt jelenti, hogy a fájl első 50 karaktere be lesz olvasva, és ki is nyomtatjuk.
  • Most hívja meg a tell() metódust az f fájlobjektumban. Láthatja, hogy a fájlmutató most az 51-es pozícióban van – ami a vártnak megfelel.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

Használhatja ezt a technikát a teljes fájl kis darabokban történő beolvasására is.

A következő kódrészlet bemutatja, hogyan teheti ezt meg.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Itt egy while ciklust használunk a fájl tartalmának olvasásához. A fájl tartalmát 50-es méretű darabokban olvassuk be, amíg el nem érjük a fájl végét. ✅

Hogyan írjunk fájlba Pythonban

Ha Pythonban szeretne szöveges fájlba írni, akkor azt írási módban kell megnyitnia – „w” megadásával.

Az alábbi kódrészlet bemutatja, hogyan kell ezt megtenni.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Látni fogja, hogy az „új_fájl.txt” létrejött a munkakönyvtárában.

  Kényszerítse böngészőjét a Google.com használatára, és hagyja figyelmen kívül a tartózkodási helyét

Most futtassa még egyszer a fenti kódcellát.

A terminálon futtassa a következő parancsot:

cat new_file.txt

# Output: Hello, Python!

Ideális esetben kétszer írtunk a fájlba. Szóval szia Python! kétszer kellett volna kinyomtatni, igaz?

De látni fogja, hogy csak egyszer nyomtatták ki. Nos, ez azért van, mert amikor egy fájlt írási (w) módban nyitunk meg, akkor alapvetően felülírjuk a fájl tartalmát új tartalommal.

Ha a meglévő tartalom felülírása nélkül szeretne hozzáadni a fájl végéhez, nyissa meg a fájlt hozzáfűzés módban. És látni fogja, hogyan kell ezt megtenni a következő részben.

Hogyan fűzzünk fájlhoz Pythonban

Ha tartalmat szeretne hozzáfűzni egy fájlhoz – felülírás nélkül, nyissa meg hozzáfűzés módban.

Ehhez használja az ‘a’-t – a hozzáfűzéshez –, és adja meg kifejezetten a módot.

Ezután futtassa kétszer a következő kódcellát.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Figyelje meg, hogy a szöveg most kétszer kerül kinyomtatásra, ahogy a fájlhoz csatoltuk.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Következtetés

Röviden összefoglaljuk, hogy miről mentünk át ebben az oktatóanyagban.

  • Megtanulta az általános fájl I/O műveleteket, például az olvasást, az írást és a fájlhoz való hozzáfűzést.
  • Ezenkívül azt is megtanulta, hogyan kell a seek() metódussal a fájlmutatót egy adott helyre mozgatni, és
  • hogyan kell a tell() metódussal lekérni a fájlmutató aktuális pozícióját.

Remélem hasznosnak találtad ezt az oktatóanyagot. Most, hogy megtanulta, hogyan kell dolgozni szöveges fájlokkal Pythonban, tanulja meg, hogyan kell dolgozni a JSON-fájlokkal Pythonban.

Összefüggő:

Ellenőrizze a lista hosszát Pythonban 3 lépésben.