Sunteți pe pagina 1din 42

Programare interactivă

Tema: Fișiere
lect. univ. Victoria ALEXEI
Departament Informatică și Ingineria Sistemelor
Facultatea Calculatoare, Informatică și Microelectronică
Fișiere în Python, manipularea fișierelor

În acest curs vom învăța:

• Crearea / deschiderea fișierelor


• Citirea fișierelor
• Scrierea în fișiere
• Metodele aplicabile fișierelor

• Ștergerea fișierelor
Fișiere. Deschiderea unui fișier

Funcția open()
open() returnează un „file handle" - o variabilă utilizată pentru a
efectua operațiuni asupra fișierului
handle = open(filename, mode)

Numele fișierului e un string


fhand = open(‘xeng.txt', 'r')
Mode – ”r” pentru citirea fișierului și ”w” pentru scrierea în el
Modurile de deschidere a fișierelor

Mode Descriere
"r" - Citire - Valoare implicită. Deschide un fișier pentru citire, eroare dacă fișierul nu există
„a” - Adăugare - Deschide un fișier pentru atașare, creează fișierul dacă nu există
„w” - Scriere - Deschide un fișier pentru scriere, creează fișierul dacă nu există
"x" - Creare - Creează fișierul specificat, returnează o eroare dacă fișierul există

"t" - Text - Valoare implicită. Mod text


„b” - Binar - Mod binar (de ex. imagini)
Modurile de deschidere a fișierelor

Pentru a deschide un fișier pentru citire este suficient să specificați numele fișierului:

Deoarece „r” pentru citire și „t” pentru text sunt valorile implicite, nu este necesar să le
specificăm.

NB! Asigurați-vă că fișierul există, altfel veți primi o eroare.


Deschiderea unui fișier
Afișează conținutul unui fișier și informații despre acesta.

Exemplu
Rezultat

Rezultat Afișați obiectul

În Windows, codificarea implicită este cp1252, iar - Linux este


utf-08.
Deschiderea unui fișier.

try/finally se asigură că dacă, după deschiderea unui fișier, operațiunile cu acesta duc la
excepții, acesta se va închide automat. Fără acesta, programul se termină incorect.

Пример

Fișierul trebuie deschis înainte de declarația


try, deoarece dacă declarația open în sine
generează o eroare, atunci fișierul nu va fi
deschis pentru a fi închis ulterior.
Deschiderea fișierului cu expresia with...as

Simplifică gestionarea excepțiilor prin încapsularea operațiunilor inițiale, precum și a


sarcinilor de închidere și curățare.
În acest caz, declarația de închidere nu este necesară, deoarece cu va închide automat
fișierul.
Exemple

Rezultat
Deschiderea, închiderea fișierului.
Metoda close()

Închiderea fișierului eliberează resursele și curăță gunoiul.


Python închide automat fișierul atunci când un obiect este alocat unui alt fișier.

Exemple
Odată închis, acest fișier nu poate fi
utilizat până când nu este redeschis.
Citirea fișierului. read(), readlines(), readline()
file.read(size)
unde, file = obiect fișier
size = numărul de caractere de citit.
Dacă nu este specificat, fișierul va fi citit în întregime.

Exemplu

Rezultat
Citirea unui fișier.
read(), readlines(), readline()
Citirea unui fișier.
read(), readlines(), readline()
Citirea unui fișier.
read(), readlines(), readline()
Metoda readline() este utilizată pentru a citi conținutul unui fișier linie cu linie. Este
folosit pentru fișiere mari.
Cu ajutorul acestuia, puteți accesa orice linie în orice moment.
Citirea unui fișier.
read(), readlines(), readline()
Citirea unui fișier.
Cu ciclul for
Când cursorul fișierului se află la sfârșitul fișierului, funcțiile read, readlines și
readline toate returnează un șir gol.
Pentru a citi conținutul unui fișier a doua oară, va trebui să închideți și să
redeschideți fișierul.

Verificare dacă fișierul a fost închis cu succes


Scrierea într-un fișier. write(), writelines()
file.write(string) Metoda write() returnează numărul de caractere scrise.
Scrierea într-un fișier.
write(), writelines()
Scrierea într-un fișier. Cu ciclul for
write(), writelines()
Scrierea într-un fișier.
write(), writelines()
Poziții fișier
Metoda tell() vă arată poziția curentă în fișier; cu alte cuvinte, următoarea
citire sau scriere va avea loc la atâtea octeți de la începutul fișierului.

Metoda seek(offset [, from]) modifică poziția curentă a fișierului.


Argumentul offset indică numărul de octeți care trebuie mutați. Argumentul
from specifică poziția de referință de unde trebuie mutați octeții.

Dacă from este setat la 0, înseamnă să folosești începutul fișierului ca poziție


de referință și 1 înseamnă să folosești poziția curentă ca poziție de referință
și dacă este setat la 2, atunci sfârșitul fișierului ar fi luat ca poziție de
referință.
Poziții fișier
Funcțiile aplicate asupra fișierelor
Funcțiile aplicate asupra fișierelor
1 file.close()
Close the file. A closed file cannot be read or written any more.

2 file.flush()
Flush the internal buffer, like stdio's fflush. This may be a no-op on some file-like objects.

3 file.fileno()
Returns the integer file descriptor that is used by the underlying implementation to request I/O operations from the
operating system.

4 file.isatty()
Returns True if the file is connected to a tty(-like) device, else False.

5 file.next()
Returns the next line from the file each time it is being called.

6 file.read([size])
Reads at most size bytes from the file (less if the read hits EOF before obtaining size bytes).
Funcțiile aplicate asupra fișierelor
7 file.readline([size])
Reads one entire line from the file. A trailing newline character is kept in the string.

8 file.readlines([sizehint])
Reads until EOF using readline() and return a list containing the lines. If the optional sizehint argument is present,
instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an
internal buffer size) are read.

9 file.seek(offset[, whence])
Sets the file's current position

10 file.tell()
Returns the file's current position
Funcțiile aplicate asupra fișierelor

11 file.truncate([size])
Truncates the file's size. If the optional size argument is present, the file is truncated to (at most) that size.

12 file.write(str)
Writes a string to the file. There is no return value.

13 file.writelines(sequence)
Writes a sequence of strings to the file. The sequence can be any iterable object producing strings, typically a list of
strings.
Numărăm liniile în fișier

python open.py
Line Count: 132045
Citirea întregului fișier odată

>>> fhand = open('mbox-short.txt')


>>> inp = fhand.read()
>>> print(len(inp))
94626
>>> print (inp[:20])
From stephen.marquar
Căutarea în fișier
Noi putem utiliza ”if”
în for să afișăm doar
acele rînduri care
îndeplinesc
anumite criterii
Rezultatul!!!
Rîndurile libere

Fiecare linie are sfîrșit de rînd


Funția print de asemenea adauga un newline la fiecare
rînd
fhand = open('cuvinte.txt')
for line in fhand:
line = line.rstrip()
if line.startswith('Python'):
print(line)

Python este un limbaj de programare dinamic multi-paradigma, creat in 1989 de


Python este un limbaj multifunc?ional folosit de exemplu
Python. Popularitatea in cre?tere, dar ?i puterea limbajului de programare
Python au dus la adoptarea sa ca limbaj principal de dezvoltare de catre
>>>
Trecem peste cu instrucțiunea continue

fhand = open(‘cuvinte.txt')
for line in fhand:
line = line.rstrip()
if not line.startswith(‘Python') :
continue
print (line)
Utilizînd ”in” pentru a selecta linii
Exemple
Redenumirea / ștergerea fișierelor
Modulul OS
Modulul Python os oferă metode care vă ajută să efectuați operații de procesare a fișierelor, precum
redenumirea și ștergerea fișierelor.

Metoda rename() ia două argumente, numele de fișier curent și numele de fișier nou.
os.rename(current_file_name, new_file_name)

import os
os.rename(src,dest)

unde, src = fișierul care urmează să fie redenumit


dest = nume de fișier nou
Exemple și Rezultate
Pentru a șterge un fișier metoda os.remove ()
Exemple și Rezultate

os.mkdir("newdir") - crearea unui dosar nou (make directory)

chdir() pentru a schimba directorul curent - os.chdir ("/home/newdir")


Change directory
Exemple și Rezultate
Metoda getcwd() afișează directorul de lucru curent- os.getcwd() get current directory
Exemple și Rezultate

Metoda rmdir() elimină folderul care este transmis ca argument către metodă. Înainte de a
șterge un folder, trebuie să ștergeți tot conținutul acestuia. Remove directory
Exemple și Rezultate
Metoda rmdir() elimină folderul care este transmis ca argument către metodă.
Înainte de a șterge un folder, trebuie să ștergeți tot conținutul acestuia. Remove
directory
Exemple și Rezultate
Metoda rmdir() poate șterge
doar folderele vide.

Pentru a elimina un folder care


nu este vid, putem folosi
metoda rmtree() din modulul
shutil.
Exemple și Rezultate

Lista dosarelor și fișierelor


Toate fișierele și subdosarele din interiorul unui folder pot fi recuperate folosind metoda
listdir().

Această metodă ia calea(path) și returnează o listă de subfoldere și fișiere în acea cale. Dacă
nu este specificată nicio cale, se returnează o listă de subfoldere și fișiere din folderul de
lucru curent.
Probleme individuale

1. Creați un fișier data.txt. Scrieți un program care deschide acest fișier pentru citire, citește
date din acesta linie cu linie și scrie liniilr într-un alt fișier (dataRo.txt), înlocuind cifrele
engleze cu cele românești, care sunt conținute în listă (["unu", "doi ","trei","patru","cinci"])
definite înainte de deschiderea fișierelor.

2. Creați un fișier nums.txt care conține mai multe numere separate prin spații. Scrieți un
program care calculează și afișează suma totală a numerelor stocate în acest fișier.
Mulțumesc de atenție

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