如何在Python中把一个字典保存到文件中

1,694 阅读4分钟

摘要: 你可以使用 Python 的pickle 库将字典数据保存到文件中。另一种将字典数据保存到文件的有效方法是使用 Python 内置的JSON 包。你也可以使用简单的文件处理函数,直接将字典数据存储到文本文件中。


问题: 给定一个 Python 字典。你将如何把字典中的数据保存到一个文件中,以便以后可以加载使用?

你可能需要持久性存储系统的帮助,如数据库或文件来存储序列化的数据结构,如数组列表字典。这样做的主要原因之一是数据库和文件是可重复使用的,也就是说,在分析了给定的数据后,我们可以将其存储在文件中,以后可以读取这些数据在应用程序中使用。

本文将讨论你可以存储在文件中的字典数据。

例子。考虑一下下面的字典

d = {'country': 'Germany',
     'capital': 'Berlin'}

挑战:你将如何在文件中存储上述字典的键值对?

相关教程。

有许多方法可以使用 Python 将字典数据存储到文件中。让我们看一下其中的一些。

方法1:使用Pickle

  • Pickle是Python中的一个模块,它使用二进制协议来序列化和反序列化对象结构。"Pickling"指的是将Python对象转换为字节流的过程。"Unpickling"只是一个反向操作,其中字节流被转换为Python对象。Pickling 有时也被称为序列化。
  • 实现Pickle文件的一个好主意是当你处理敏感数据时,或者当你需要跨会话保持程序状态时。

方法。

  • open(filename, mode) 函数的帮助下创建pickle文件(即filename.pkl)。由于我们将在pickle文件中存储数据,该文件以二进制流的形式存储数据,因此,以二进制("wb")模式打开该文件。
  • 使用pickle.dump(dictionary, filename) 方法将字典数据存储/序列化到文件中。
  • 要从该文件中读取数据,请调用pickle.load(filename) 方法。
  • 注意: 记得关闭该文件。

代码、让我们借助于下面的代码片段来直观地了解上述方法。

import pickle
d = {'country': 'Germany',
     'capital': 'Berlin'}
file = open("dictionary_data.pkl", "wb")
pickle.dump(d, file)
file.close()
file = open("dictionary_data.pkl", "rb")
output = pickle.load(file)
print(output)
file.close()

输出。

输出 控制台。

{'country': 'Germany', 'capital': 'Berlin'}

方法2:使用json

方法。

  • 通过调用open('filename','mode') ,以写模式打开文件。
  • 使用json.dump(dictionary, filename) 函数将字典数据转换为json格式,并将其写入文件中。
  • 要从这个文件中读出数据,通过调用file.read() 函数从其中读出数据。
  • 注意: 记得关闭该文件。

代码。

import json
d = {'country': 'Germany',
     'capital': 'Berlin'}
file = open("dictionary_data.json", "w")
json.dump(d, file)
file.close()
file = open("dictionary_data.json", "r")
output = file.read()
print(output)
file.close()

输出。

输出 控制台。

{"country": "Germany", "capital": "Berlin"}

注意: json.dump() 方法是用来将Python对象转换为JSON字符串的。

方法3:使用Numpy

当涉及到将字典存储到文件时,使用JSON和Pickle是最好的选择。但我们也有另一种方法,即使用 Numpy 模块。

方法。调np.save(filename, dictionary) 函数,将文件保存到磁盘中。为了从这个文件中读取数据,我们调用np.load('file.npy', allow_pickle='TRUE').item() 函数。

代码。

import numpy as np
d = {'country': 'Germany',
     'capital': 'Berlin'}
np.save('file.npy', d)
read_d = np.load('file.npy', allow_pickle='TRUE').item()
print(read_d)

方法4:基本方法

最后,也是最重要的,你可以将字典数据存储到一个简单的文本文件中,只需使用文件处理函数将数据写入文件即可。

方法。

  • 调用open('filename.txt', 'w') 函数,在写模式下创建/打开文件。
  • 使用file.write(str(dictionary)) 函数将字典数据写入文件,然后关闭该文件。
  • 要从这个文件中读出数据,就要打开这个文件,用file.read() 方法从这个文件中读出数据。
d = {'country': 'Germany',
     'capital': 'Berlin'}
f = open('file.txt', 'w')
f.write(str(d))
f.close()
f = open('file.txt', 'r')
data = f.read()
print(data)
f.close()

输出。

关于文件处理的推荐读物。

总结

在这篇文章中,我们学习了在Python中把字典数据存储到文件中的四种方法。在文件中存储字典数据的最合适的方法是使用 JSON 或 pickle 模块。然而,请随意尝试本教程中讨论的其他方法。