为什么';不要用python来保存我保存的东西?

为什么';不要用python来保存我保存的东西?,python,save,pickle,Python,Save,Pickle,我有一个问题,当我泡菜的东西,它没有保存的确切文本,我保存。我想保存的是一个列表,但在代码中它会向列表中添加内容(我不知道这是否会影响它) inventory是我一直添加到的列表。当我查看inventory.file文件时,它只说 �]q�. 我不知道这是什么意思。另外,我是Python的初学者,所以我不太擅长。酸洗东西不会创建对象的纯文本表示;它创建了一个可以在Python中打开以生成相同对象的文件。此表示形式不是为人类可读而设计的(因此需要使用pickle.load()“取消勾选”它)。因

我有一个问题,当我泡菜的东西,它没有保存的确切文本,我保存。我想保存的是一个列表,但在代码中它会向列表中添加内容(我不知道这是否会影响它)

inventory
是我一直添加到的列表。当我查看
inventory.file
文件时,它只说

�]q�.

我不知道这是什么意思。另外,我是Python的初学者,所以我不太擅长。

酸洗东西不会创建对象的纯文本表示;它创建了一个可以在Python中打开以生成相同对象的文件。此表示形式不是为人类可读而设计的(因此需要使用
pickle.load()
“取消勾选”它)。因此,您无法使用文本编辑器打开已勾选的文件,并期望看到列表

如果
pickle.load(fi)
生成的列表与您保存的列表相同,则酸洗过程正常。如果您想创建一个可读文件,请尝试:

  • 将列表转换为字符串(例如
    ,'.join(seq)
    )并保存该字符串
  • 另一个数据存储模块(如或)

酸洗将对象的表示形式保存到文件中。这将不是一个人类可读的表示形式,它将是一个可以通过再次取消酸洗重新加载到内存中的表示形式。如果在酸洗
库存之后,我们将其设置为
,然后通过pickle从文件中加载它,我们可以看到这一点。您可以看到,我们可以从文件中获得准确的值返回列表的ame表示形式

导入pickle
inventoryFile='inventory.file'
存货=[1,2,3]
打印(库存)
打开(库存文件,“wb”)作为fi:
pickle.dump(库存,fi)
存货=无
打印(库存)
打开(库存文件“rb”)作为fi:
库存=酸洗负荷(fi)
打印(库存)
输出

[1, 2, 3]
None
[1, 2, 3]
如果我们从纯文本编辑器中查看文件,我们会看到

�]q (KKKe.

但这并不是为人类可读而设计的。

查看inventory.file是什么意思?您是指在python之外的文件系统中查看它吗?您唯一需要担心的是从
.load()
返回的
inventory
对象是否正确。
�]q (KKKe.