Cum să gestionați fișierele în Python

În orice limbaj de programare, manipularea fișierelor este un aspect important. Și Python acceptă, de asemenea, lucrul cu fișiere în diferite moduri, cum ar fi citirea și scrierea în fișiere și multe altele.

Până la sfârșitul acestui tutorial, veți putea:

  • deschideți și citiți fișiere în Python,
  • citiți linii dintr-un fișier text,
  • scrieți și adăugați fișierelor și
  • utilizați manageri de context pentru a lucra cu fișiere în Python.

Cum se citește fișierul în Python

Pentru a deschide un fișier în Python, puteți utiliza sintaxa generală: open(‘file_name’,’mode’).

  • Aici, file_name este numele fișierului.

Notă: Dacă fișierul pe care doriți să-l deschideți se află în directorul de lucru curent, puteți menționa numai numele fișierului. Dacă se află într-un alt folder din mediul dvs. de lucru, ar trebui să includeți calea către fișier.

  • Modul parametru specifică modul în care doriți să deschideți fișierul.

Modul implicit pentru deschiderea unui fișier este citit – indicat cu litera „r”. Cu toate acestea, este o practică recomandată să specificați modul în mod explicit.

Înainte de a începe, să aruncăm o privire la fișierul lib.txt, pe care îl vom folosi în acest exemplu.

📁 Descărcați fișierul text și codul folosit în acest tutorial de la acest depozit GitHub.

Fragmentul de cod de mai jos arată cum puteți deschide un fișier text „lib.txt” în Python folosind funcția open() și citiți conținutul acestuia.

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

În exemplul de mai sus,

  • Funcția open() returnează un obiect fișier și alegem să-l numim fișier.
  • Apoi, apelăm metoda read() pe fișier.
  • Conținutul variabilei conține acum conținutul fișierului. Și o tipărim.
  • În sfârșit, închidem fișierul.
  Cum să vizionezi TATA IPL 2022 gratuit în India

Cu toate acestea, dacă uitați să închideți fișierul, va exista o posibilă risipă de resurse. Dacă lucrați cu un număr mare de astfel de fișiere, poate exista o utilizare substanțială a memoriei. Acest lucru se datorează faptului că ați deschis mai multe fișiere, dar nu ați închis niciunul dintre ele.

Acum, să învățăm o modalitate mai bună de a deschide fișiere folosind managerii de context. Fragmentul de cod de mai jos arată cum le puteți utiliza.

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

Când utilizați manageri de contacte pentru a lucra cu fișiere, nu trebuie să utilizați metoda close(). Fișierele sunt închise automat după finalizarea operațiunii I/O.

Cum să citești linii din fișier în Python

În fișierul text exemplu, aveam doar câteva rânduri. Deci citirea întregului conținut al fișierului deodată nu a fost o problemă.

Cu toate acestea, atunci când trebuie să citiți fișiere mari, utilizarea metodei read(), așa cum se arată mai sus, poate să nu fie foarte eficientă.

De fapt, dacă fișierul text are o dimensiune foarte mare, este posibil să rămâneți în curând fără memorie. De aceea, este posibil să doriți să citiți în rânduri numai pentru citire dintr-un fișier text și veți învăța cum să faceți acest lucru în această secțiune.

Folosind metoda readline() de la Python pentru a citi liniile din fișier

Metoda readline() citește câte o linie din fișier.

Rulați următorul fragment de cod.

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:

Puteți vedea că după primul apel de metodă readline(), prima linie din fișier este tipărită. Iar al doilea apel la metoda readline() returnează a doua linie din fișier.

Acest lucru se datorează faptului că, după primul apel de metodă, indicatorul fișierului se află la începutul celei de-a doua linii.

În Python, puteți folosi metoda tell() pentru a obține locația curentă a pointerului fișierului. Și pentru a muta indicatorul fișierului într-o locație specifică, puteți folosi metoda seek().

În fragmentul de cod de mai jos, folosim f.seek(0) după primul apel de metodă. Aceasta mută indicatorul fișierului la începutul fișierului text. De aceea, de ambele ori, prima linie din fișier este tipărită.

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!

Folosind metoda readlines() de la Python pentru a citi liniile din fișier

Există o altă metodă strâns legată numită readlines().

  Cum să partajați un fișier Google Docs, Sheets sau Slides ca pagină web

Când rulați următorul fragment de cod, veți vedea că metoda readlines() returnează o listă cu toate liniile din fișier.

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']

Folosind bucla Python pentru a citi liniile din fișier

Pentru a citi liniile dintr-un fișier text, puteți utiliza și bucla for.

Odată ce aveți un obiect fișier, puteți utiliza bucla for pentru a itera conținutul fișierului – câte o linie și a le tipări, așa cum se arată mai jos. Observați cum accesăm o singură linie odată și nu citim întregul conținut al fișierului.

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

Notă: Când utilizați funcția print() din Python, separatorul implicit este un caracter newline—’n’. Dar în fișierul original, nu avem aceste linii noi. Deci setați argumentul separator la un șir gol: end = ” pentru a imprima conținutul fișierului așa cum este.

Cum să citiți bucăți de conținut din fișier în Python

În Python, puteți alege, de asemenea, să citiți conținutul fișierului în termeni de bucăți mici.

Citiți codul de mai jos:

  • Aici, setăm chunk_size la 50. Aceasta înseamnă că primele 50 de caractere din fișier vor fi citite și, de asemenea, le imprimăm.
  • Acum, apelați metoda tell() pe obiectul fișier f. Puteți vedea că pointerul fișierului se află acum în poziția 51, ceea ce este așa cum era de așteptat.
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

De asemenea, puteți utiliza această tehnică pentru a citi întregul fișier în termeni de bucăți mici.

  Înțelegerea UCaaS într-o lume conectată [+6 Solutions for SMBs]

Următorul fragment de cod arată cum puteți face acest lucru.

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

Aici, folosim o buclă while pentru a citi conținutul fișierului. Citim conținutul fișierului în bucăți de dimensiunea 50 până ajungem la sfârșitul fișierului. ✅

Cum se scrie în fișier în Python

Pentru a scrie într-un fișier text în Python, ar trebui să îl deschideți în modul de scriere, specificând „w”.

Fragmentul de cod de mai jos arată cum se face.

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

Veți vedea că „new_file.txt” a fost creat în directorul dvs. de lucru.

Acum, rulați din nou celula de cod de mai sus.

În terminalul dvs. rulați următoarea comandă:

cat new_file.txt

# Output: Hello, Python!

În mod ideal, am scris în fișier de două ori. Deci Bună, Python! ar fi trebuit tipărit de două ori, da?

Dar vei vedea că a fost tipărit o singură dată. Ei bine, acest lucru se datorează faptului că atunci când deschideți un fișier în modul de scriere (w), practic suprascrieți conținutul fișierului cu conținut nou.

Dacă doriți să adăugați la sfârșitul fișierului fără a suprascrie conținutul existent, ar trebui să deschideți fișierul în modul de adăugare. Și veți vedea cum să faceți acest lucru în secțiunea următoare.

Cum se adaugă la fișier în Python

Dacă doriți să adăugați conținut la un fișier, fără a-l suprascrie, deschideți-l în modul de adăugare.

Pentru a face acest lucru, utilizați `’a’—a pentru anexare—și specificați modul în mod explicit.

Apoi, rulați următoarea celulă de cod de două ori.

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

Observați cum textul este tipărit de două ori acum, așa cum l-am atașat la fișier.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Concluzie

Să rezumam rapid ceea ce am analizat în acest tutorial.

  • Ați învățat operațiunile comune I/O ale fișierelor, cum ar fi citirea, scrierea și adăugarea la un fișier.
  • În plus, ați învățat și cum să utilizați metoda seek() pentru a muta indicatorul fișierului într-o anumită poziție și
  • cum să utilizați metoda tell() pentru a prelua poziția curentă a pointerului fișierului.

Sper că ați găsit acest tutorial de ajutor. Acum că ați învățat cum să lucrați cu fișiere text în Python, aflați cum să lucrați cu fișiere JSON în Python.

Legate de:

Verificați lungimea unei liste în Python în 3 pași.