🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Programarea calculatoarelor și limbaje de programare 2 CU RS 5 Ș. L. DR. I N G. ST EL IAN - NICOL A E N I COL A Recapitulare partea I - Cum se instalează o nouă bibliotecă în Python? - Care este sintaxa funcției folosită pentru afișarea pe ecran? - Care este sintaxa funcției folosită pentru citire...

Programarea calculatoarelor și limbaje de programare 2 CU RS 5 Ș. L. DR. I N G. ST EL IAN - NICOL A E N I COL A Recapitulare partea I - Cum se instalează o nouă bibliotecă în Python? - Care este sintaxa funcției folosită pentru afișarea pe ecran? - Care este sintaxa funcției folosită pentru citirea unei variabile? - Care sunt sintaxele funcțiilor IF, MATCH, FOR, WHILE? - Ce este o listă? Un tuplu? Un set? Un dicționar? - Cum se declară o funcție? - Cum se crează un modul? Fișiere Un fișier este o locație specifică pe disc utilizată pentru stocarea persistentă a informațiilor. Operațiile cu fișiere implică următorii pași: ◦ deschiderea fișierului, ◦ citirea/scrierea datelor și ◦ închiderea fișierului după utilizare. Pentru a putea lucra cu un fișier mai întâi este necesar să îl deschidem. Pentru deschiderea fișierelor avem la dispoziție funcția built-in open() cu formatul complet: f = open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None) Argumentele funcției open() ▪ file: este calea către fișierul pe care dorim să-l deschidem ▪ mode: specifică modul în care fișierul va fi deschis. Valorile posibile includ: ▪ 'r’: deschide fișierul în modul citire (implicit). ▪ 'w’: deschide fișierul în modul scriere, ștergând conținutul existent dacă fișierul există, sau creând un fișier nou dacă acesta nu există. ▪ 'a’: deschide fișierul în modul adăugare (append), adăugând date la sfârșitul fișierului dacă există, sau creând un fișier nou dacă acesta nu există. ▪ 'x’: deschide fișierul în modul creare (exclusivă), returnând o eroare dacă fișierul există deja. ▪ 'b’: deschide fișierul în mod binar. ▪ 't’: deschide fișierul în mod text (implicit). ▪ '+’: deschide fișierul pentru actualizare (citire și scriere). ▪buffering: Specifică modul de buffering al fișierului. Valorile posibile includ: ▪ -1: utilizează bufferul implicit al sistemului. ▪ 0: fără buffer. ▪ 1 sau mai mare: Specifică dimensiunea bufferului în octeți. Argumentele funcției open() ▪encoding: specifică codificarea caracterelor pentru fișierul deschis. ▪errors: specifică modul în care erorile de codificare/decodificare trebuie gestionate. Valorile posibile includ: ◦ 'strict’: generează o excepție UnicodeError în cazul unei erori de codificare/decodificare. ◦ 'ignore’: ignoră caracterele cu probleme. ◦ 'replace’: substituie caracterele cu probleme cu un substituent adecvat. ◦ 'backslashreplace’: converteste caracterele problematice în secvențe \xNN. ◦ 'xmlcharrefreplace’: converteste caracterele problematice în referințe de caractere XML. ▪newline: specifică separatorul de linie utilizat. Dacă este None, atunci se utilizează separatorul de linie implicit al sistemului de operare. ▪closefd: un argument boolean care specifică dacă descriptorul de fișier asociat trebuie închis atunci când fișierul este închis. Implicit este True. ▪opener: un obiect invocabil (de exemplu, o funcție) care poate fi folosit pentru a deschide fișierele în locul funcției open() implicită. Este utilizat rar. Dacă este None, se folosește funcția open() implicită. Deschiderea/închiderea fișierelor text Pentru a închide un fișier text vom folosi funcția close(): f=open("date.txt","w") f.close() Sunt situații în care la interpretare apare o eroare, iar funcția close nu mai ajunge să fie apelată, iar fișierul rămâne deschis. Un mod automat de închidere/deschidere a fișierelor text este folosirea cuvântului cheie with: with open("date.txt","w") as f: #bloc de instructiuni indentat Proprietățile fișierelor Odată ce un fișier este deschis, puteți obține diverse informații legate de acel fișier. f = open("date.txt", "w") print("Numele fisierului este: ", f.name) print("Fisierul este inchis?: ", f.closed) print("Fisierul este deschis pentru: ", f.mode) f.close() print("Fisierul este inchis?: ", f.closed) Numele fisierului este: date.txt Fisierul este inchis?: False Fisierul este deschis pentru: w Fisierul este inchis?: True Citirea fișierelor text Metodele asociate citirii pentru un obiect de tip fișier sunt: ◦ read(nr caractere - optional) – citește tot conținutul ◦ readline() – citește o linie ◦ readlines() – citește linie cu linie tot fișierul f=open("date.in","r") f=open("date.in","r") f=open("date.in","r") print(f.read()) print(f.readline(),end=' ') print(f.readlines(),end=' ') f.close() f.close() f.close() Citirea fișierelor text with open("date.in","r") as f: continut=f.read() print(type(continut)) print(continut) Dacă între linii există newline acesta va fi detectat și afișarea se va face exact ca și în fișier. Putem să îl detectăm în conținutul citit și să îl înlocuim: with open("date.in","r") as f: continut=f.read() print(type(continut)) print(continut.replace("\n"," ")) Poziția pointer-ului După ce apelăm metoda read, cursorul se va afla la sfârșitul fișierului de date. Dacă încercăm să recitim conținutul printr-un nou apel, va fi afișată o linie vidă. Pentru a afla poziția curentă, folosim metoda tell() a obiectului f. Folosim metoda seek(pozitie_de_inceput) pentru a muta pointerul la o anumită poziție din fișier în vederea citirii. Continutul fisierului: Python f = open("date.in", "r") C #citim fisierul Java print("Continutul fisierului: ",f.read()) C# #afisam pozitia la care este acum cursorul C++ print("Pozitia curenta a cursorului este: ",f.tell()) Pozitia curenta a cursorului este: 24 #repozitionam cursorul la inceput Primele 10 caractere din fisier sunt: Python f.seek(0) C print("Primele 10 caractere din fisier sunt: ",f.read(10)) J print("Noua pozitie a cursorului este: ",f.tell()) Noua pozitie a cursorului este: 12 f.close() Exemplu – citire fișier linie cu linie with open("date.in","r") as f: linie_fisier=f.readline() contor=0 while linie_fisier: linie_fisier=linie_fisier.replace("\n","") linie_fisier=linie_fisier.upper() contor+=1 print("Linia "+str(contor)+": "+linie_fisier) linie_fisier=f.readline() Linia 1: PYTHON Linia 2: C Linia 3: JAVA Linia 4: C# Linia 5: C++ Exemplu 2 citire linie cu linie with open('date.in') as f: for line in f.readlines(): print (line) Este citit și separatorul de șir “\n” care este adăugat la afișări. with open('date.in') as f: for line in f: print (line) Scrierea fișierelor text Pentru a scrie într-un fișier text, trebuie să-l deschidem corespunzător utilizând funcția open, folosind parametrii "w" (pentru rescriere) sau "a" (pentru adăugare). În ambele cazuri, dacă fișierul nu există pe disc, va fi creat automat unul nou, fără conținut. Pentru a scrie în fișier vom folosi funcția write() sau writelines(). Exemplu: generăm 100 numere aleatoare în intervalul [10,100] și le scriem în fișier, câte 10 pe rând. import random with open("aleator.out","w") as f: for i in range(10): for j in range(10): f.write(str(random.randint(10,100))+" ") f.write("\n") Scrierea fișierelor text Încercați acum să citiți fișierul anterior și să faceți suma numerelor prime din fișier. Atenție! Vom folosi funcții definite de utilizator pentru verificarea numărului dacă este prim. Dacă dorim să scriem în fișier linie cu linie la fiecare rulare vom deschide fișierul pentru adăugare: import random with open("aleator.out","a") as f: for i in range(10): f.write(str(random.randint(10,100))+" ") f.write("\n") La fiecare rulare a programului se va adăuga în fișier o nouă linie cu numere aleatoare. Scrierea fișierelor text Putem realiza scrierea în fișier și cu ajutorul funcției print(): s = "Suntem la cursul de Python!\nRezolvam probleme cu fisiere." with open('output.txt', 'w') as f: print(s, file=f) Ștergerea unui fișier Pentru a șterge un fișier fizic de pe disc putem folosi funcția remove(nume_fișier) care o găsim în modulul os (operating system). Putem să verificăm existența unui fișier folosind metoda exists(nume_fișier). import os if os.path.exists("date.txt"): os.remove("date.txt") else: print("Fisierul nu exista pe disc!") Crearea de directoare Pentru a crea un director vom utiliza metoda mkdir(nume_director) din modulul os. import os nume_director=input("Introduceti numele directorului: ") os.mkdir(nume_director) Exemplu creare director #Crearea unui director cu nume dat si un fisier text cu nume dat si #scrierea unui text in fisier. import os nume_director=input("Introduceti numele directorului: ") os.mkdir(nume_director) nume_fisier=input("Introduceti numele fisierului: ") cale=nume_director+"/"+nume_fisier+".txt" f=open(cale,"w") text=input("Scrie ceva: ") f.write(text) f.close() print("Uraaa suntem tari, am scris textul "+text+" in fisier!") Exemplu ierarhie de directoare import os #deschidem conexiunea spre citirea fisierului #creem directorul cu numele citit text os.mkdir(director) f1=open("PCLP2/curs_pclp2.txt","r") #compunem calea catre fiserul text #citim fiecare linie din fisier si o impartim cale=director+"/"+director+".txt" x=f1.read().splitlines() #deschidem conexiunea cu fisierul text #inchidem conexiunea fisierului text #spre scriere f1.close() f=open(cale,"w") #parcurgem lista de siruri #scriem in fisier ce am citit for i in x: f.write(str(director)) #creem numele fiecarui fisier text #inchidem fisierul in care am scris director=str(i) f.close() Exemplu – citirea unui fisier.csv, calcularea sumei cifrelor din el. f=open("PCLP2/asd.csv","r") x=f.readlines() f.close() for i in x: s=0 for j in i: if(j>='0' and j

Use Quizgecko on...
Browser
Browser