Deseu un dictat en un fitxer

Save Dict File



Diccionari és un objecte molt famós de Python. I és una col·lecció de claus i valors. La clau del dictat ha de ser immutable i pot ser sencer, flotant, cadena, però ni una llista ni un dictat poden ser claus. Per tant, de vegades hem de desar els objectes dict en un fitxer. Per tant, veurem diferents mètodes per desar un objecte dict en un fitxer.

Podem escriure el diccionari en un fitxer de Python de diferents maneres, com ara:







  1. Fitxer de valors separats per comes (.csv)
  2. Fitxer JSON (.json)
  3. Fitxer de text (.txt)
  4. Fitxer escabetx (.pkl)

Explicarem tots els mètodes anteriors.



Mètode 1: deseu el diccionari en format CSV

Per desar el diccionari al CSV (valors separats per comes), fem servir el mòdul CSV. Els valors separats per comes per desar el dictat de pitó són el mètode més comú i famós. La majoria dels programadors utilitzen aquest mètode només per desar el dictat en un fitxer. Desar el diccionari en un fitxer com a CSV és molt fàcil, ja que hem de transferir les dades com una cadena.



Exemple_1: dict_to_csv.py





# dict_to_csv.py
importació csv

dict_sample= {'nom':'LinuxHint', 'ciutat':'AIX '', 'educació':'Enginyeria'}

amb obert('data.csv', 'dins') comf:
perclaudinsdict_sample.claus():
f.escriure('% s,% s n'%(clau,dict_sample[clau]))

Línia 2 : Importem el mòdul CSV python.

Línia 4 : Hem creat una mostra de dades. Intentarem desar-lo en forma de fitxer CSV.



Línia 6: Utilitzem la sentència 'amb' aquí per escriure el fitxer CSV. La sentència 'amb' gestiona l'excepció de manera automàtica durant la lectura o l'escriptura d'un fitxer. Obrim el fitxer data.csv en mode d’escriptura i assignem aquest objecte a la variable f.

Línia 7 , Estem executant un bucle for que extreu la clau i, a la següent línia, escriu la clau i el valor_clau en un fitxer CSV. Per tant, aquest bucle s’executarà fins que hi hagi dades.

Sortida: data.csv

nom,LinuxHint
ciutat,AIX.
educació,Enginyeria

Per tant, l’anterior mostra el fitxer de sortida després d’escriure al data.csv.

Ara entenem com desar el dictat en un fitxer en forma de CSV. Provem amb un altre exemple en què volem escriure una llista d’objectes dict al fitxer CSV.

Exemple_2: dict_to_csv_2.py

# dict_to_csv_2.py

importació csv

csvColumns= ['Ciutat', 'País', 'Rang']
dictDemo= [
{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
]
csvFileName= 'data.csv'
provar:
amb obert(csvFileName, 'dins') comf:
escriptor= csv.DictWriter(f,noms de camp=csvColumns)
escriptor.capçalera d'escriptura()
perdadesdinsdictDemo:
escriptor.escriptor(dades)
excepte IOError:
imprimir('S'ha produït un error')

Línia 3 a 12: Importem el mòdul CSV de Python i creem una llista d’objectes dict. També hem creat una llista de noms de columnes.

Línia 13: Hem assignat el nom del fitxer CSV a una variable.

Línia 15: Utilitzem la sentència 'amb' i la sentència va assignar el mètode __enter__ a l'objecte de retorn de la variable f.

Línia 16 a 19: Després d'assignar l'objecte de retorn a la variable f, hem anomenat un mètode DictWriter del mòdul CSV i hem passat dos paràmetres (nom de fitxer (f) i noms de columna). A continuació, anomenem un altre mètode writeheader () que escriurà la primera fila del fitxer CSV, que generalment és el nom dels camps. A continuació, executem un bucle for a la llista dels objectes dict i escrivim un per un al fitxer CSV mitjançant el mètode writerow ().

Mètode 2: deseu el dictat en un fitxer de text en format JSON (mode d'afegir)

També podem desar els objectes dict en forma de JSON en un fitxer. El codi següent explicarà el mateix. Aquest codi també explica com podem afegir JSON nou a una llista existent de JSON.

Exemple : dict_to_file_asJSON.py

# dict_to_file_asJSON.py

importaciójson

dictDemo= [
{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
]

nom de l'arxiu= 'dict.json'

# Escriure la llista d'objectes dict en un fitxer
amb obert(nom de l'arxiu,mode='dins') comf:
json.abocador(dictDemo,f)

# Escriure un nou objecte dict a un fitxer com a annex i sobreescriure el fitxer sencer
amb obert(nom de l'arxiu,mode='dins') comf:
dictDemo.afegir({'Ciutat':'Peix', 'País':'China'})
json.abocador(dictDemo,f)

Sortida : dict.json

[{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
{'Ciutat':'Peix', 'País':'China'}
]

Línia 1 a 13 : Importem el mòdul JSON. A continuació, creem una llista d'objectes dictats per a la demostració. A continuació, hem assignat el nom del fitxer JSON a un nom de fitxer variable.

Línia 15 a 17 : Estem utilitzant la sentència 'amb' per obrir el fitxer JSON per escriure i, a continuació, fem servir el mètode json.dump per convertir els objectes dict a JSON i després escriure al fitxer.

Línia 20 a 22: Aquestes línies són molt importants perquè què passarà? Si intentem afegir objectes JSON nous als fitxers ja escrits. Les dades anteriors es perdran a causa de la sobreescriptura. A continuació, podem utilitzar el nom de la llista de dict anteriors tal com vam fer (dictDemo) i, a continuació, hi afegim el nou objecte. I, finalment, convertim tot el fitxer en JSON i sobreescrivim tot el fitxer.

A la sortida, podem veure que s’afegeix un nou objecte JSON a una llista JSON existent.

Mètode 3: deseu els objectes del diccionari en un fitxer en forma txt

També podem desar el diccionari en un format de cadena normal al fitxer. Per tant, el mètode següent és una manera molt senzilla de desar els objectes del diccionari al fitxer en forma de text. Però aquest codi no funcionarà si volem afegir un nou objecte de diccionari al fitxer perquè se sobreescriurà a les dades escrites anteriorment. Per tant, per a això, ho veurem al següent codi.

Exemple: dict_to_txt.py

# dict_to_txt.py

dictDemo= [
{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
]

nom de l'arxiu= 'dict.txt'

# Escriure la llista d'objectes dict en un fitxer
amb obert(nom de l'arxiu,mode='dins') comf:
f.escriure(pàg(dictDemo))

Sortida: dict.txt

[{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7}]

Línia 1 a 11 : Hem creat una llista d'objectes del diccionari i hem assignat el nom del fitxer dict.txt a un nom de fitxer variable.

Línia 14 a 15 : Utilitzem la sentència 'amb' aquí, que gestiona automàticament l'excepció. I estem escrivint la llista d’objectes dictats com una cadena a un fitxer.

Exemple: dict_to_txt_2.py

Hem vist com desar els objectes dict en un fitxer en el format .txt. Però al codi anterior, hi ha un problema amb l’afegit d’un objecte nou. Per tant, canviem el mètode d'afegir de 'w' a 'a', que pot resoldre el nostre problema tal com es mostra a continuació al codi.

# dict_to_txt_2.py

'' ': cvar
Aquest codi desarà els objectes dictats al fitxer amb el fitxer
mode d'afegir.
'' '

dictDemo= [
{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
]

nom de l'arxiu= 'dict_to_file_appendMode.txt'

# Escriure la llista d'objectes dict en un fitxer
amb obert(nom de l'arxiu,mode='A') comf:
f.escriure(pàg(dictDemo))

Línia 7 a 15 : Hem creat una llista d'objectes del diccionari i hem assignat el nom del fitxer dict_to_file_appendMode.txt a un nom de fitxer variable.

Línia 18 a 19 : Canviem el mode = 'a', i això solucionarà el nostre problema. La sortida següent mostra que hem afegit dos objectes dict en el mateix fitxer sense sobreescriure les dades anteriors.

Sortida: dict_to_file_appendMode.txt

[{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7}]

[{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7}]

Mètode 4: deseu l'objecte dict en un fitxer mitjançant el mètode de pickle.

També podem desar l’objecte dict en un fitxer mitjançant el mòdul d’escabetx python. El mòdul pickle admet molts objectes per a la serialització en python i també admet objectes dict.

# dict_to_file_use_pickle.py

importació escabetx

dictDemo= [
{'Ciutat':'Nova York', 'País':'USA', 'Rang':3},
{'Ciutat':'Sydney', 'País':'Austràlia', 'Rang':5},
{'Ciutat':'Dubai', 'País':'Emirats Àrabs Units', 'Rang':10},
{'Ciutat':'Bombai', 'País':'Índia', 'Rang':17},
{'Ciutat':'Peix', 'País':'China', 'Rang':7},
]

nom de l'arxiu= 'picklefile.pkl'

amb obert(nom de l'arxiu, 'fora') comf:
escabetx.abocador(dictDemo,f)

Línia 3 a 13 : Importem l’escabetx del mòdul i creem una llista d’objectes dict. També creem un nom de fitxer on desarem els nostres objectes dict.

Línia 15 a 16 : Utilitzem la sentència 'amb' aquí i obrim el fitxer amb mode addicional i format binari. A continuació, bolquem els objectes dict al fitxer.

Conclusió

Per tant, hem vist diferents mètodes per desar un objecte de diccionari en un fitxer. Depèn de l'usuari que vulgui desar l'objecte al fitxer. Els mètodes més habituals per desar l'objecte dict al fitxer són JSON i CSV. Els formats JSON i CSV són molt famosos des del punt de vista de la programació o són fàcils de manejar en python. També hem vist el mode d'afegir fitxers.

El codi d’aquest article es pot descarregar des d’aquest enllaç:

https://github.com/shekharpandey89/save-dict-object-to-a-file