HOWTO · Python

Salvar um dicionário em um arquivo em Python

Este tutorial demonstra como salvar um dicionário em um arquivo em Python

Nesta página

Para salvar um dicionário Python e lê-lo mais tarde, escolha o formato conforme o uso dos dados: use JSON para valores compatíveis com JSON quando quiser um arquivo portátil e legível por pessoas; use pickle para objetos Python quando o arquivo for carregado apenas de uma fonte confiável; ou use o formato .npy do NumPy quando seu fluxo de trabalho já depender do NumPy. Cada exemplo abaixo grava um arquivo e lê o dicionário de volta.

Como salvar um dicionário em arquivo no Python usando a função dump do módulo pickle

O módulo pickle armazena objetos Python em um formato binário específico do Python. O exemplo a seguir grava um dicionário com pickle.dump() e o lê com pickle.load(). Use wb para gravar bytes e rb para lê-los; o diretório temporário mantém o exemplo autocontido.

import pickle
from pathlib import Path
from tempfile import TemporaryDirectory

my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}

with TemporaryDirectory() as directory:
    file_path = Path(directory) / "myDictionary.pkl"
    with file_path.open("wb") as file:
        pickle.dump(my_dict, file)

    with file_path.open("rb") as file:
        new_dict = pickle.load(file)

    print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}

Carregue arquivos pickle apenas de fontes em que você confia: a desserialização pode executar código. Pickle é útil quando a serialização específica do Python é aceitável, mas não é um formato portátil para intercâmbio de dados.

Como salvar um dicionário em arquivo no Python usando a função save da biblioteca NumPy

Se o seu projeto já usa NumPy, np.save() pode armazenar um dicionário em um array de objetos .npy. Para carregar esses dados de objeto, é necessário usar allow_pickle=True; chame .item() no array de dimensão zero carregado para recuperar o dicionário. Isso também traz o risco de confiança associado ao carregamento de dados serializados com pickle. O NumPy precisa estar instalado.

import numpy as np
from pathlib import Path
from tempfile import TemporaryDirectory

my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}

with TemporaryDirectory() as directory:
    file_path = Path(directory) / "dictionary.npy"
    np.save(file_path, my_dict)
    new_dict = np.load(file_path, allow_pickle=True).item()
    print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}

Como salvar um dicionário em arquivo no Python usando a função dump do módulo json

Para obter um arquivo legível que possa ser compartilhado com outras linguagens, use o módulo json integrado ao Python quando o dicionário contiver valores compatíveis com JSON. json.dump() grava em um arquivo de texto, e json.load() lê os dados de volta. Um gerenciador de contexto fecha cada arquivo mesmo se uma operação falhar. JSON não preserva objetos Python arbitrários nem todos os tipos do Python; por exemplo, classes personalizadas precisam de uma estratégia de conversão explícita.

import json
from pathlib import Path
from tempfile import TemporaryDirectory

my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}

with TemporaryDirectory() as directory:
    file_path = Path(directory) / "myDictionary.json"
    with file_path.open("w", encoding="utf-8") as file:
        json.dump(my_dict, file)

    with file_path.open("r", encoding="utf-8") as file:
        new_dict = json.load(file)

    print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}