Sunteți pe pagina 1din 7

Lucrul cu fişiere

Tipuri de fișiere:
 Text - conține date care au fost codificate în text folosind scheme ca ASCII sau Unicode.
Chiar dacă fișierele conțin numere, ele sunt stocate ca o serie de caractere. Drept rezultat,
fișierul poate fi deschis și văzut într-un editor de text precum Notepad sau Word
 Binare - conțin date care sunt convertite în text

Metode de acces:
 Secvenţial – înregistrările se parcurg secvenţial.
 Direct – înregistrările pot fi accesate direct

Un fișier obiect (file object) este un obiect asociat cu un fișier specific și oferă o cale
programului de a lucra cu acel fișier. În program, o variabilă referă obiectul fișier. Acea variabilă
se îngrijește de toate operațiile făcute în fișier.

Modul de lucru:

 deschidere fişier în modul dorit


 efectuare operaţii pe conţinutul acestuia
 închidere fişier.

Deschiderea unui fişier


se face folosind funcţia open. Sintaxa este:

identificator_fişier = open(‘nume_fişier’ [,‘mod_deschidere’] [, buffer])

unde

 identificator _fişier - numele variabilei care referă obiectul fișier


 nume_fişier - conţine calea către fişierul care va fi deschis (dacă este doar numele
fişierului, atunci Python va căuta fişierul în calea în care se află scriptul),
 mod_deschidere - este unul dintre modurile din tabelul de mai jos, scris ca string
(modul implicit este "citire", r), Un fişier poate fi deschis în mai multe moduri:

Implicit
Deschide fişierul pentru citire (read).
r
Fişierul va fi suprascris.
Fişierul trebuie să existe.
Deschide fişierul pentru citire în format binar.
rb Fişierul va fi suprascris.
Fişierul trebuie să existe.
r+ Deschide fişierul şi pentru scriere şi pentru citire (read/write)
Fişierul va fi suprascris.
Fişierul trebuie să existe.
Deschide fişierul şi pentru scriere şi pentru citire (read/write) în format binar
rb+ Fişierul va fi suprascris.
Fişierul trebuie să existe.
Deschide fişierul pentru scriere (write).
w Fişierul va fi suprascris.
Dacă fişierul nu există, îl va crea.
Deschide fişierul pentru scriere în format binar.
wb Fişierul va fi suprascris.
Dacă fişierul nu există, va fi creat.
Deschide fişierul pentru scriere şi citire (read/write) în format normal
w+ Fişierul va fi suprascris.
Dacă fişierul nu exisă, va fi creat.
Deschide fişierul pentru scriere şi citire (read/write) în format binar.
wb+ Fişierul va fi suprascris.
Dacă fişierul nu exisă, va fi creat.
Deschide fişierul pentru scriere (write) cu append la finalul acestuia.
a
Dacă fişierul nu există, îl va crea.
Deschide fişierul pentru scriere în format binar cu append la finalul acestuia.
ab
Dacă fişierul nu există, va fi creat.
Deschide fişierul pentru scriere şi citire (read/write) în format normal, cu append
a+ la finalul acestuia.
Dacă fişierul nu exisă, va fi creat.
Deschide fişierul pentru scriere şi citire (read/write) în format binar cu append la
ab+ finalul acestuia.
Dacă fişierul nu exisă, va fi creat.
x (Create) - creează fişierul, apare eroare dacă fişierul există.

 buffer indică dimensiunea bufferului.

Obs: dacă bufferul are o valoare diferită de 0 sau 1, atunci textul pe care vrem să îl scriem în
fişier, va fi mai întâi adăugat în acest buffer, iar abia atunci când dimensiunea textului depăşeşte
pe cea a bufferului, textul aflat în buffer va fi adăugat în fişier.

Exemplu:

Fișierul client.txt conține datele unui client și vrem să îl deschidem pentru a îl citi:

fisier_client = open(‘client.txt’, ‘r’)

După ce declarația este executată, fișierul client.txt este deschis și variabila fisier_client va referi
un fișier obiect pe care îl putem folosi ca să citim date din fișier.
Închiderea unui fişier
Metoda close() - închide fisierul și eliberează memoria.

Pentru a ne asigura că orice fişier va fi închis după ce a fost utilizat se poate folosi managerul de
context (context manager) with care se asigură că fişierul va fi închis odată ce s-a terminat
executarea blocului de cod inclus în acesta.

Sintaxa:

with open(‘nume_fişier’,’mod_deschidere’ as identificator_fişier

De exemplu

Programul: Poate fi scris:

# Scriere în fişier # Scriere în fişier

f = open('test.txt', 'w') with open('test.txt', 'w') as f:


f.write('text de test') f.write('text de test')
f.close()
# Citire din fişier # Citire din fişier

f = open('test.txt', 'r') with open('test.txt', 'r') as f:


print(f.read()) print(f.read())
f.close()

Cuvântul cheie with ne indică prezenţa unui manager de context, urmând apoi o funcţie care
returnază un manager de context şi atribuim acest rezultat unei variabile (în cazul nostru f) prin
cuvântul cheie as.

Variabila aceasta va fi o variabilă locală, ceea ce înseamnă că nu va mai fi disponibilă după


încheierea blocului with.

Este recomandată folosirea acestei metode de a lucra cu fişiere în Python. Motivele sunt că pe de
o parte, codul arată mult mai bine şi este mai uşor de întreţinut, iar pe de cealaltă parte, elimină
posibilitatea de a uita un fişier deschis.

Scrierea într-un fişier


Metoda write() – scrie în fișier

Identificator_fişier.write(string[/n])

unde:
 Identificator_fişier - numele variabilei care referă obiectul fișier
 string – un şir care va fi scris în fişier
 /n face ca şirul să fie scris într-o linie nouă

Daca şirul este de tip numeric sau listă se face mai întâi conversia la tipul string și apoi se scrie
în fișier.

Dacă şirul e de tip obiect (instanță a clasei X), atunci clasa respectivă trebuie să implementeze
metoda __str__ (__repr__)

Fişierul trebuie deschis în prealabil pentru scris (‘w’ sau ‘a’) altfel apare eroare.

Exemplu 1:

fisier_client = open(‘client.txt’, ‘w’)


fisier_client.write(‘Metro/n’)
fisier_client.write(‘Brico/n’)
fisier_client.write(‘Dedeman/n’)
fisier_client.close()

sau

client=‘Metro’
fisier_client.write(‘client’)
fisier_client.close()

Exemplu 2:

#Acest program ia trei nume de la user şi le scrie intr-un fisier


print('Introduceti numele a trei client:')
nume1 = input('Clientul 1 ')
nume2 = input('Clientul 2 ')
nume3 = input('Clientul 3 ')
#deschide un fisier numit clienti.txt
fisier = open('clienti.txt', 'w')
#Scrie numele in fisier
fisier.write(nume1 + '\n')
fisier.write(nume2 + '\n')
fisier.write(nume3 + '\n')
#inchide fisierul
fisier.close()
print('Numele au fost scrise in clienti.txt')
Șirurile pot fi scrise direct cu metoda write, în schimb numerele trebuiesc convertite în șiruri
înainte de a fi scrise, pentru aceasta putându-se folosi funcţia str().

Exemplu:

#Acest program ia trei numere de la utilizator


#si le scrie intr-un fisier
print('Introduceti numerele:')
nr1 = int(input('Numarul 1: '))
nr2 = input('Numarul 2: '))
nr3 = input('Numarul 3: '))
#deschide un fisier numit numere.txt
fisier = open('numere.txt', 'w')
#Scrie numele in fisier
fisier.write(str(nr1) + '\n')
fisier.write(str(nr2) + '\n')
fisier.write(str(nr3) + '\n')
#inchide fisierul
fisier.close()
print('Numerele au fost scrise in numere.txt')

Expresia str(nr1) + ‘\n’ convertește valoarea referită de variabila nr1 într-un șir și o concatenează
cu ‘\n’ șirului.

Citirea conţinutului unui fişier


Metoda read() - citirea tuturor liniilor dintr-un fișier si returnarea unui singur string (care
conţine informaţiile din toate liniile). Poate fi specificat numărul de caractere citite (de exemplu
read(100)).

Metoda readline() - citirea unei linii din fișier și returnarea ei sub formă de string

Exemplu :

fisier_client = open(‘client.txt’, ‘r’)


continut_fisier= fisier_client.read()
fisier_client.close()
print(continut_fisier)

este echivalent cu:

print(open(“client.txt’).read())
Copierea conţinutului unui fişier
fisier=open(‘date.txt’. ’r’)
linii=fisier.read()
fisier.close()
copie=open(‘copiedate.txt’, ‘w’)
copie.write(linii)
copie.close()

Fişiere CSV
Un fișier CSV (fișier cu valori separate prin virgulă) este un tip de fișier text simplu care
utilizează structurarea specifică pentru a aranja datele tabulare. Deoarece este un fișier text
simplu, acesta poate conține numai date de text reale - cu alte cuvinte, caractere tipărite ASCII
sau Unicode.

Structura unui fișier CSV este dată de numele său. În mod normal, fișierele CSV utilizează o
virgulă pentru a separa fiecare valoare specifică a datelor.

În general, caracterul separator se numește delimitator, iar virgula nu este singura folosită. Alte
delimitatoare populare includ caracterele tab (\ t), colon (:) și semi-colon (;). Executarea corectă
a unui fișier CSV ne cere să știm ce delimitator este utilizat.

Citirea dintr-un fișier CSV se face utilizând obiectul reader prin intermediul bibliotecii CSV
care se deschide prin instrucţiunea import csv.

Fișierul CSV este deschis ca fișier text cu funcția open(), care returnează un obiect de fișier.
Acesta este apoi transmis către reader.

Fişierul csv angajati.txt conţine:

nume,departament, luna
Popescu Ion,Contabilitate,Noiembrie
Ipnescu Virgil,IT,Martie

Programul:

import csv
with open(angajati.txt') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'Numele coloanelor sunt{", ".join(row)}')
line_count += 1
else:
print(f'\t{row[0]} lucrează în departamentul {row[1]}, s-a nascut în {row[2]}.')
line_count += 1
print(f'Procesate {line_count} linii.')

Rezultatul va fi:

Numele coloanelor sunt, departament, luna


Popescu Ion lucrează în departmentul Contabilitare, si s-a nascut în Noiembrie.
Ionescu Virgil Ion lucrează în departmentul IT, si s-a nascut în Martie.
Procesate 3 linii.

Fiecare rând returnat de reader este o listă a elementelor String care conțin datele găsite prin
eliminarea delimitatorilor. Primul rând returnat conține numele coloanelor, care sunt tratate într-
un mod special.

Bibliografie

http://mirceaprodan.com/wp-content/uploads/2014/10/Cum-sa-programezi-in-PythonMP.pdf

S-ar putea să vă placă și