Articles

Citirea și scrierea listelor într-un fișier în Python

ca structuri de date serializate, programatorii Python folosesc intens matrice, liste și dicționare. Stocarea acestor structuri de date necesită în mod persistent fie un fișier, fie o bază de date cu care să lucrați. Acest articol descrie cum să scrieți o listă în fișier și cum să citiți acea listă înapoi în memorie.

pentru a scrie date într-un fișier și pentru a citi date dintr-un fișier, limbajul de programare Python oferă metodele standard write() și read() pentru tratarea unei singure linii, precum și writelines() și readlines() pentru a face cu mai multe linii. Mai mult, atât modulul pickle, cât și modulul json permit modalități inteligente de a trata și seturile de date serializate.

utilizarea metodelor de citire și scriere

pentru a trata caracterele (șirurile) metodele de bază funcționează excelent. Salvarea unei astfel de liste linie cu linie în fișierul listfile.txt se poate face după cum urmează:

# define list of placesplaces = with open('listfile.txt', 'w') as filehandle: for listitem in places: filehandle.write('%s\n' % listitem)

în linia 6 listitem este extins de un linebreak” \n”, în primul rând, și stocat în fișierul de ieșire, în al doilea rând. Pentru a citi întreaga listă din lista de fișierefișier.txt înapoi în memorie acest cod Python vă arată cum funcționează:

# define an empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: for line in filehandle: # remove linebreak which is the last character of the string currentPlace = line # add item to the list places.append(currentPlace)

rețineți că va trebui să eliminați linia de la sfârșitul șirului. În acest caz, ne ajută ca Python să permită și operații de listă pe șiruri de caractere. În linia 8 a codului de mai sus, această eliminare se face pur și simplu ca o operație de listă pe șirul în sine, care păstrează totul, cu excepția ultimului element. Acest element conține caracterul „\n ” care reprezintă linia de rupere pe sistemele Unix/Linux.

utilizarea metodelor writelines și readlines

după cum sa menționat la începutul acestui articol Python conține, de asemenea, cele două metodewritelines() șireadlines() pentru a scrie și citi mai multe linii într-un singur pas, respectiv. Pentru a scrie întreaga listă într-un fișier de pe disc, codul Python este după cum urmează:

# define list of placesplaces_list = with open('listfile.txt', 'w') as filehandle: filehandle.writelines("%s\n" % place for place in places_list)

pentru a citi întreaga listă dintr-un fișier de pe disc, codul Python este următorul:

# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: filecontents = filehandle.readlines() for line in filecontents: # remove linebreak which is the last character of the string current_place = line # add item to the list places.append(current_place)

lista de mai sus urmează o abordare mai tradițională împrumutată din alte limbaje de programare. Pentru a scrie într-un mod mai Pythonic, aruncați o privire la codul de mai jos:

# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: places = 

după ce ați deschis fișierul listfile.txt în linia 5, restabilirea listei are loc în întregime în linia 6. În primul rând, conținutul fișierului este citit prin readlines(). În al doilea rând, într-o buclăfor din fiecare linie, caracterul linebreak este eliminat folosind metodarstrip(). În al treilea rând, șirul este adăugat la lista de locuri ca element de listă nou. În comparație cu listarea înainte de codul este mult mai compact, dar poate fi mai dificil de citit pentru programatori Python începători.

folosind modulul de murături

diferitele metode explicate până acum stochează lista într-un mod în care oamenii o pot citi în continuare. În cazul în care acest lucru nu este necesar, modulul de murături poate deveni destul de util pentru dvs. Metoda sadump() stochează lista eficient ca flux de date binare. În primul rând, în linia 7 (în codul de mai jos) fișierul de ieșire listfile.data este deschis pentru scrierea binară („wb”). În al doilea rând, în linia 9
lista este stocată în fișierul deschis folosind metoda dump().

# load additional moduleimport pickle# define a list of placesplacesList = with open('listfile.data', 'wb') as filehandle: # store the data as binary data stream pickle.dump(placesList, filehandle)

ca pas următor, citim lista din fișier după cum urmează. În primul rând, fișierul de ieșire listfile.data este deschis binar pentru citire („rb”) în linia 4. În al doilea rând, lista locurilor este încărcată din fișier folosind metoda load().

# load additional moduleimport picklewith open('listfile.data', 'rb') as filehandle: # read the data as binary data stream placesList = pickle.load(filehandle)

cele două exemple de aici demonstrează utilizarea șirurilor. Deși,pickle funcționează cu tot felul de obiecte Python, cum ar fi siruri de caractere, numere, structuri auto-definite, și orice alte built-in structura de date Python oferă.

utilizarea formatului JSON

formatul de date binarepickle utilizări este specific Python. Pentru a îmbunătăți interoperabilitatea între diferite programe JavaScript Object Notation (JSON) oferă o schemă ușor de utilizat și ușor de citit de om și, astfel, a devenit foarte populară.

următorul exemplu demonstrează cum se scrie o listă de tipuri de variabile mixte într-un fișier de ieșire utilizând modulul json. În linia 4 este definită lista de bază. După deschiderea fișierului de ieșire pentru scrierea în linia 7, metoda dump() stochează lista de bază din fișier folosind notația JSON.

import json# define list with valuesbasicList = # open output file for writingwith open('listfile.txt', 'w') as filehandle: json.dump(basicList, filehandle)

citirea conținutului fișierului de ieșire înapoi în memorie este la fel de simplă ca scrierea datelor. Metoda corespunzătoare dump() se numește load() și funcționează după cum urmează:

import json# open output file for readingwith open('listfile.txt', 'r') as filehandle: basicList = json.load(filehandle)

concluzie

diferitele metode prezentate mai sus variază de la date simple de scriere/citire până la dumping/încărcare a datelor prin fluxuri binare folosind pickle și JSON. Acest lucru simplifică stocarea persistentă a unei liste și citirea acesteia în memorie.

mulțumiri

autorul ar dori să-i mulțumească lui Zoleka Hatitongwe pentru sprijinul acordat în pregătirea articolului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *