Intrare și ieșire - un tutorial despre Python 3

Intrare și ieșire

Puteți familiariza utilizatorul cu ieșirea din program în diverse moduri - datele pot fi afișate într-o formă ușor de citit sau scrise într-un fișier pentru o utilizare ulterioară. O parte din posibilități vor fi discutate în acest capitol.







Formatul de ieșire convenabil

În acest moment, am descoperit două modalități de ieșire a valorilor: instrucțiuni de expresie și tipărire (). (Cea de-a treia metodă este de a utiliza metoda write () a obiectelor de fișier, puteți consulta fișierul de ieșire standard ca sys.stdout.) Pentru mai multe informații despre acest element, consultați Biblioteca.)

Deseori există dorința de a avea mai mult control asupra formatării de ieșire decât imprimarea obișnuită a valorilor separate prin spații. Există două moduri de a vă formata ieșirea. Prima modalitate este de a face toate lucrările pe linii de tine: folosind linii felii și concatenare, aveți posibilitatea să creați orice șablon doriți. Modulul șir standard conține multe operații utile pentru alinierea rândurilor pe o anumită lățime a coloanei (le vom discuta pe scurt în scurt timp). A doua metodă este utilizarea metodei str.format ().

Modulul șir conține clasa de șabloane. care oferă un alt mod de substituire a valorilor în șiruri de caractere.

Desigur, rămâne o întrebare: cum să convertiți valorile în șiruri de caractere? Din fericire, în Python, există două modalități de a converti orice valoare într-un șir - acestea sunt repr () și str ().

Iată două modalități de afișare a unei tabele de pătrate și cuburi:

(Rețineți că în primul exemplu, spațiile individuale între coloane sunt adăugate de funcția print (), ele inserează întotdeauna spații între parametrii săi)

Acest exemplu demonstrează funcționarea metodei rjust () a obiectelor șir. aliniind linia la dreapta în câmpul lățimii transmise, întinzând spațiile spre stânga. Există, de asemenea, metode similare pentru ljust () și center (). Aceste metode nu produc nimic, ci doar returnează o nouă linie. Dacă linia de intrare este prea lungă, atunci nu o trunchiază, care este, de obicei, mai mică de rele. (Puteți adăuga o operație slice pentru trunchiere, de exemplu: x.ljust (n) [: n].)

Există o altă metodă - zfill (). care umple cu spațiu zero spațiul din stânga șirului numeric. El recunoaște semnele plus și minus:

Metoda principală de a utiliza metoda str.format () este următoarea:

Parantezele cu simboluri din interiorul (numite câmpuri de format) sunt înlocuite cu obiecte transmise metodei de formatare. Numărul din paranteze indică poziția obiectului din lista de parametri transmise metodei de formatare.

Dacă utilizați parametrii numiți în metoda formatului, puteți să le referenți valorile folosind numele argumentului corespunzător.

Parametrii poziționali și numiți pot fi combinați în mod arbitrar:

După numele câmpului, poate fi urmat un specificator de format opțional. “. Folosind-o, poți controla formatarea unei valori. Următorul exemplu părăsește numărul Pi numai cu trei cifre după separatorul zecimal.

După calificativ ". "Puteți specifica un număr - lățimea minimă a câmpului, exprimată în numărul de caractere. Este convenabil de folosit pentru a crea mese frumoase:

Dacă linia dvs. cu formatul este foarte lungă și nu doriți să o rupeți în substringuri, ar fi frumos să vă referiți la variabilele destinate formatării, nu după poziție, ci după nume. Acest lucru se poate face simplu prin trecerea dicționarului și folosind parantezele pătrate "[]" pentru a accesa cheile.

Același lucru se poate face prin trecerea dicționarului parametrilor numiți folosind notația "**":

În particular, această metodă este convenabilă pentru a fi utilizată în combinație cu funcția încorporată vars (). care returnează un dicționar cu variabile locale.

Pentru o descriere detaliată a șirurilor de formatare utilizând metoda str.format (), consultați secțiunea Sintaxă a șirurilor de formatare.

Formatarea șirurilor în vechiul stil

De asemenea, puteți utiliza operația% pentru a formata șiruri de caractere. Interpretează operandul din stânga ca șir format în stilul sprintf. care ar trebui să fie aplicată la operandul drept și returnează șirul rezultat din această conversie. De exemplu:







Deoarece metoda str.format () este destul de nouă, majoritatea codului sursă Python încă utilizează operația%. Totuși, în timp, formatarea șirurilor vor fi eliminate din limbaj, deci în cele mai multe cazuri ar trebui să utilizați str.format ().

Pentru mai multe informații, consultați operațiile de formatare a șirului în stil vechi.

Scrieți și citiți fișiere

Funcția open () returnează un obiect de fișier și în majoritatea cazurilor este utilizat cu două argumente: open (nume fișier, Mod).

Primul parametru este un șir care conține numele fișierului. Al doilea este o altă linie care conține mai multe simboluri care descriu modul în care este utilizat fișierul. Valoarea parametrului de mod poate fi simbolul "r". în cazul în care fișierul este deschis numai pentru citire, „w“ - deschidere pentru scriere numai (un fișier existent cu același nume vor fi șterse), și „a“ - fișierul este deschis pentru a adăuga: toate datele scrise în fișierul este adăugat automat la sfârșitul anului. 'r +' deschide fișierul pentru citire și scriere. Modul parametru este opțional: dacă este omis - se presupune că acesta este egal cu 'r'.

În cazul obișnuit, fișierele sunt deschise în modul text - aceasta înseamnă că citiți dintr-un fișier și scrieți linii către fișier într-o anumită codificare (UTF-8 este folosit în mod implicit). Dacă adăugați caracterul "b" în modul fișier, fișierul se deschide în modul binar: datele sunt acum citite și scrise ca obiecte binare. Acest mod ar trebui să fie utilizat pentru toate fișierele care nu conțin text.

Când se utilizează modul text, toate terminalele de linie, în mod implicit, specifice platformei (\ n pe Unix, \ r \ n în Windows) sunt trunchiate la caracterul \ n. când citiți dintr-un fișier și transformați înapoi din \ n la o vizualizare specifică platformei atunci când scrieți la un fișier. Aceste modificări în spatele scenelor funcționează corect în cazul fișierelor text, dar vor corupe datele binare în fișiere precum JPEG sau EXE. Aveți grijă să utilizați modul binar atunci când citiți și scrieți astfel de fișiere.

Metode pentru obiecte de fișiere

În exemplele de mai jos, se presupune că un obiect de fișier numit f a fost creat în prealabil.

f.readlines () returnează o listă care conține toate liniile de date găsite în fișier. Dacă este trecut un parametru de tip dimensional opțional. funcția citește un număr specificat de octeți din fișier, plus un număr de octeți în plus, suficient pentru a finaliza linia și formează o listă de rânduri din rezultat. Funcția este adesea folosită pentru o funcționare mai eficientă (fișierul nu se încarcă în memorie în totalitate) linia după citirea fișierelor mari. Vor fi returnate numai liniile complete (completate).

O modalitate alternativă de citire liniară este să organizați o buclă pe un obiect de fișier. Este rapid, utilizează rațional memoria și are un cod simplu ca urmare a:

Metoda alternativă este mai simplă, dar nu asigură un control subtil asupra a ceea ce se întâmplă. Deoarece ambele metode lucrează cu tampoane diferite, nu trebuie confundate.

f.write (string) scrie conținutul șirului într-un fișier și returnează numărul de octeți scrise.

Pentru a scrie ceva diferit de un șir într-un fișier, trebuie mai întâi să convertiți ceva la șir:

f.tell () returnează un întreg care reprezintă poziția curentă din fișierul f. măsurat în octeți de la începutul dosarului. Pentru a schimba poziția obiectului de fișier, utilizați f.seek (offset, de unde). Poziția este calculată prin adăugarea unei deplasări la punctul de referință; punctul de referință este selectat de la parametrul de unde. Valoarea 0 a parametrului din care se măsoară offsetul de la începutul fișierului, valoarea 1 aplică poziția curentă în fișier, iar valoarea 2 utilizează sfârșitul fișierului ca punct de referință. Parametrul din care poate fi omis și implicit valoarea 0. Folosind începutul fișierului ca punct de referință.

Când lucrați cu fișiere text (deschideți fără caracterul b în linia de mod), este posibilă efectuarea căutării numai de la începutul fișierului (cu excepția derulării până la sfârșitul fișierului folosind căutarea (0, 2)).

După ce ați finalizat toate acțiunile din fișier, sunați f.close () pentru al închide și eliberați toate resursele de sistem utilizate la deschiderea acestui fișier. Toate încercările de a utiliza un obiect de fișier după apelarea f.close () vor avea ca rezultat o excepție.

Se consideră o modalitate bună de a utiliza cuvântul cheie atunci când lucrați cu obiecte de fișier. Avantajul acestei metode este faptul că fișierul se închide întotdeauna corect după executarea blocului sau dacă o excepție a fost ridicată în timpul execuției. În plus, codul rezultat este mult mai scurt decât forma echivalentă cu blocurile try-finally:

Obiectele de fișiere au mai multe metode suplimentare, cum ar fi isatty () și truncate (). care nu sunt folosite atât de des; Consultați Biblioteca Referință pentru o prezentare mai completă a obiectelor de fișier.

Module de muraturi

În loc să forțeze programatorul să scrie în mod constant și să depaneze codul pentru tipurile de date convolute, Python oferă un modul standard numit pickle. Acesta este un modul grozav care poate accepta orice obiect Python (chiar și unele forme de cod Python!) Și convertiți-l într-o reprezentare de șir: acest proces se numește decapare. Restaurarea unui obiect din reprezentarea șirului se numește deconectare: șirul care descrie obiectul poate fi salvat într-un fișier, adăugat la unele date sau trimis printr-o conexiune de rețea la un computer la distanță.

Dacă aveți un obiect x și un obiect de fișiere f. deschis pentru a scrie în modul binar (cu opțiunea 'wb'), cel mai simplu mod de conservare a unui obiect necesită o singură linie de cod:

Pentru a reactiva obiectul, cu condiția că f este un obiect de fișier deschis pentru citire (și în modul binar, cu parametrul "rb"):

(Există opțiuni pentru efectuarea acestor operații care se aplică atunci când redeschideți mai multe obiecte sau când doriți să scrieți date conservate într-un fișier, consultați documentația pentru modulul pickle din Biblioteca.)







Articole similare

Trimiteți-le prietenilor: