为什么在 python 中腌制某些东西不保存我保存的确切内容?
Why doesn't pickling something in python save the exact thing I save?
我有一个问题,当我腌制某些东西时,它没有将准确的文本保存到我保存的内容中。我想保存的是一个列表,但在代码中它向列表添加了东西(我不知道这是否会影响它)。
import pickle
inventoryFile = 'inventory.file'
with open(inventoryFile, "wb") as fi:
pickle.dump(inventory, fi)
with open(inventoryFile, "rb") as fi:
inventory = pickle.load(fi)
inventory
是我不断添加的列表。当我查看 inventory.file
文件时,它只说
�]q�.
不知道什么意思。我也是Python的初学者,所以我不太好。
Pickling 不会创建对象的纯文本表示;它创建一个文件,可以打开该文件以在 Python 中生成相同的对象。此表示形式并非设计为人类可读(因此需要 "unpickle" 使用 pickle.load()
。因此您无法使用文本编辑器打开 pickled 文件并期望看到列表。
如果 pickle.load(fi)
生成的列表与您保存的列表相同,则酸洗进行得很好。如果您想创建一个人类可读的文件,请尝试:
pickling 会将对象的表示形式保存到文件中。这不会是一种人类可读的表示形式,它将是一种可以通过再次 unpickling 重新加载到内存中的表示形式。我们可以看到,如果在 pickle inventory
之后我们将其设置为 None
然后我们通过 pickle 从文件中加载它,您会看到我们得到了完全相同的列表表示形式。
import pickle
inventoryFile = 'inventory.file'
inventory = [1,2,3]
print(inventory)
with open(inventoryFile, "wb") as fi:
pickle.dump(inventory, fi)
inventory = None
print(inventory)
with open(inventoryFile, "rb") as fi:
inventory = pickle.load(fi)
print(inventory)
输出
[1, 2, 3]
None
[1, 2, 3]
如果我们仅通过纯文本编辑器查看文件,我们会看到
�]q (KKKe.
但这不是为了人类可读而设计的。
我有一个问题,当我腌制某些东西时,它没有将准确的文本保存到我保存的内容中。我想保存的是一个列表,但在代码中它向列表添加了东西(我不知道这是否会影响它)。
import pickle
inventoryFile = 'inventory.file'
with open(inventoryFile, "wb") as fi:
pickle.dump(inventory, fi)
with open(inventoryFile, "rb") as fi:
inventory = pickle.load(fi)
inventory
是我不断添加的列表。当我查看 inventory.file
文件时,它只说
�]q�.
不知道什么意思。我也是Python的初学者,所以我不太好。
Pickling 不会创建对象的纯文本表示;它创建一个文件,可以打开该文件以在 Python 中生成相同的对象。此表示形式并非设计为人类可读(因此需要 "unpickle" 使用 pickle.load()
。因此您无法使用文本编辑器打开 pickled 文件并期望看到列表。
如果 pickle.load(fi)
生成的列表与您保存的列表相同,则酸洗进行得很好。如果您想创建一个人类可读的文件,请尝试:
pickling 会将对象的表示形式保存到文件中。这不会是一种人类可读的表示形式,它将是一种可以通过再次 unpickling 重新加载到内存中的表示形式。我们可以看到,如果在 pickle inventory
之后我们将其设置为 None
然后我们通过 pickle 从文件中加载它,您会看到我们得到了完全相同的列表表示形式。
import pickle
inventoryFile = 'inventory.file'
inventory = [1,2,3]
print(inventory)
with open(inventoryFile, "wb") as fi:
pickle.dump(inventory, fi)
inventory = None
print(inventory)
with open(inventoryFile, "rb") as fi:
inventory = pickle.load(fi)
print(inventory)
输出
[1, 2, 3]
None
[1, 2, 3]
如果我们仅通过纯文本编辑器查看文件,我们会看到
�]q (KKKe.
但这不是为了人类可读而设计的。