Запазете речник във файл

Save Dict File



Речникът е много известен обект в python. И това е колекция от ключове и стойности. Ключът на dict трябва да бъде неизменим и може да бъде цяло число, float, низ, но нито списък, нито самият dict не могат да бъдат ключ. Така че понякога се налага да запазваме dict обектите във файл. Така че ще видим различни методи за запазване на dict обект във файл.

Можем да запишем речника във файл в Python по различни начини като:







  1. Файл със стойност, разделен със запетая (.csv)
  2. Json файл (.json)
  3. Текстов файл (.txt)
  4. Пикап файл (.pkl)

Ще обясним всички горепосочени методи.



Метод 1: Запазете речника във формат CSV

За да запишем речника в CSV (Стойности, разделени със запетая), използваме CSV модула. Стойностите, разделени със запетая, за запазване на python dict е най-често срещаният и известен метод. Повечето програмисти използват този метод само за запазване на dict във файл. За да запазите речника във файл като CSV е много лесно, тъй като трябва да прехвърлим данните като низ.



Пример_1: dict_to_csv.py





# dict_to_csv.py
внос csv

dict_sample= {'име':„LinuxHint“, 'град':'ЧЕ', 'образование':'Инженерство'}

с отворен('data.csv', 'в') катоf:
заключвdict_sample.ключове():
е.пиши('% s,% sн'%(ключ,dict_sample[ключ]))

Ред 2 : Импортираме CSV python модула.

Ред 4 : Създадохме примерни данни за dict. Ще се опитаме да го запишем под формата на CSV файл.



Ред 6: Тук използваме изявление „with“, за да напишем CSV файла. Изразът „with“ обработва автоматично обработката на изключения по време на четене или запис на файл. Отваряме файла data.csv в режим на запис и присвояваме този обект на променливата f.

Ред 7 , Ние изпълняваме цикъл for, който извлича ключа, а в следващия ред той записва ключа и key_value в CSV файл. Така че този цикъл ще работи, докато има данни.

Изход: data.csv

име,LinuxHint
град,ЧЕ
образование,Инженерство

И така, горното показва изходния файл след запис на data.csv.

Сега разбираме как да запишем dict във файл под формата на CSV. Нека опитаме с друг пример, където искаме да напишем списък с dict обекти в CSV файла.

Пример_2: dict_to_csv_2.py

# dict_to_csv_2.py

внос csv

csvColumns= [„Град“, 'Страна', „Ранг“]
dictDemo= [
{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
]
csvFileName= 'data.csv'
опитвам:
с отворен(csvFileName, 'в') катоf:
писател= csv.DictWriter(е,имена на полета=csvColumns)
писател.писател()
заданнивdictDemo:
писател.писане(данни)
с изключение IOError:
печат(„Получих грешка“)

Ред 3 до 12: Импортираме модула на python CSV и създаваме списък с dict обекти. Създадохме и списък с имена на колони.

Ред 13: Присвоихме името на CSV файла на променлива.

Ред 15: Ние използваме израза ‘with’ и изявлението присвоява обекта за връщане на метода __enter__ на променливата f.

Редове 16 до 19: След като присвоихме обекта за връщане на променливата f, извикахме метод DictWriter на CSV модула и предадохме два параметъра (име на файл (f) и имена на колони). След това извикваме друг метод writeheader (), който ще запише първия ред на CSV файла, който обикновено е името на полетата. След това изпълняваме цикъл for в списъка на dict обектите и записваме един по един в CSV файла, като използваме метода writerow ().

Метод 2: Запазете речника в текстов файл във формат JSON (режим на добавяне)

Също така можем да запазим dict обектите под формата на JSON във файл. Кодът по -долу ще обясни същото. Този код също обяснява как можем да добавим нов JSON към съществуващ списък с JSON.

Пример : dict_to_file_asJSON.py

#dict_to_file_asJSON.py

вносjson

dictDemo= [
{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
]

име на файл= 'dict.json'

# Записване на списък с dict обекти във файл
с отворен(име на файл,режим='в') катоf:
json.сметище(dictDemo,е)

# Записване на нов dict обект във файл като добавяне и презаписване на целия файл
с отворен(име на файл,режим='в') катоf:
dictDemo.добавям({„Град“:'Пекин', 'Страна':„Китай“})
json.сметище(dictDemo,е)

Изход : dict.json

[{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
{„Град“:'Пекин', 'Страна':„Китай“}
]

Ред 1 до 13 : Импортираме JSON модула. След това създаваме списък с dict обекти за демонстрацията. След това присвоихме името на JSON файла на променливо име на файл.

Ред 15 до 17 : Използваме израза „with“, за да отворим JSON файла за запис и след това използваме метода json.dump, за да преобразуваме dict обектите в JSON и след това да запишем във файла.

Редове 20 до 22: Тези редове са много важни, защото какво ще се случи? Ако се опитаме да добавим нови JSON обекти към вече написаните файлове. Предишните данни ще бъдат загубени поради презаписването. След това можем да използваме предишното име на списъка dict, както направихме (dictDemo), и след това добавяме новия обект към него. И накрая, преобразуваме целия файл в JSON и презаписваме целия файл.

В изхода можем да видим, че нов JSON обект е добавен към съществуващ JSON списък.

Метод 3: Запазете обектите на речника във файл в txt форма

Също така можем да запишем речника в нормален низ формат във файла. Така че методът по -долу е много прост начин за запазване на речниковите обекти във файла в текстовата форма. Но този код няма да работи, ако искаме да добавим нов обект от речника към файла, защото той ще презапише върху преди това записаните данни. Така че за това ще го видим в следващия код.

Пример: dict_to_txt.py

#dict_to_txt.py

dictDemo= [
{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
]

име на файл= 'dict.txt'

# Записване на списък с dict обекти във файл
с отворен(име на файл,режим='в') катоf:
е.пиши(стр(dictDemo))

Изход: dict.txt

[{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7}]

Ред 1 до 11 : Създадохме списък с речникови обекти и присвоихме името на файла dict.txt на променливо име на файл.

Ред 14 до 15 : Тук използваме израза „with“, който автоматично обработва изключението. И ние пишем списъка с dict обекти като низ към файл.

Пример: dict_to_txt_2.py

Видяхме как да запишете dict обектите във файл във формата .txt. Но в горния код има един проблем с добавянето на нов обект. Така че, ние променяме метода на добавяне от „w“ на „a“, което може да реши проблема ни, както е показано по -долу в кода.

#dict_to_txt_2.py

'' ': cvar
Този код ще запише dict обектите във файла с
режим на добавяне.
'' '

dictDemo= [
{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
]

име на файл= 'dict_to_file_appendMode.txt'

# Записване на списък с dict обекти във файл
с отворен(име на файл,режим='да се') катоf:
е.пиши(стр(dictDemo))

Ред 7 до 15 : Създадохме списък с речникови обекти и присвоихме името на файла dict_to_file_appendMode.txt на променливо име на файл.

Ред 18 до 19 : Променяме mode = ‘a’ и това ще реши проблема ни. Изходът по -долу показва, че сме добавили два dict обекта в същия файл, без да презаписваме предишните данни.

Изход: dict_to_file_appendMode.txt

[{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7}]

[{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7}]

Метод 4: Запишете dict обекта във файл, използвайки метода pickle.

Също така можем да запазим dict обекта във файл, използвайки модула за избиране на python. Модулът pickle поддържа много обекти за сериализация в python и също така поддържа dict обекти.

# dict_to_file_use_pickle.py

внос туршия

dictDemo= [
{„Град“:'Ню Йорк', 'Страна':„ИЗПОЛЗВА“, „Ранг“:3},
{„Град“:'Сидни', 'Страна':'Австралия', „Ранг“:5},
{„Град“:'Дубай', 'Страна':„ОАЕ“, „Ранг“:10},
{„Град“:'Мумбай', 'Страна':'Индия', „Ранг“:17},
{„Град“:'Пекин', 'Страна':„Китай“, „Ранг“:7},
]

име на файл= 'picklefile.pkl'

с отворен(име на файл, 'далеч') катоf:
туршия.сметище(dictDemo,е)

Ред 3 до 13 : Импортираме модула pickle и създаваме списък с dict обекти. Също така създаваме име на файл, където ще запазваме нашите dict обекти.

Ред 15 до 16 : Тук използваме оператора „with“ и отваряме файла с режим на добавяне и двоичен формат. След това изхвърляме dict обектите във файла.

Заключение

И така, виждали сме различни методи за запазване на речников обект във файл. От потребителя зависи как иска да запише обекта във файла. Най -често срещаните методи за запазване на dict обекта във файла са JSON и CSV. Форматите JSON и CSV са много известни от гледна точка на програмирането или лесни за работа в python. Виждали сме и режим на добавяне на запис на файлове.

Кодът за тази статия може да бъде изтеглен от тази връзка:

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