2

我正在使用 cPickle 将结构数据转换为数据流格式并将其传递给库。我要做的是从手动写入的文件名“targetstrings.txt”中读取文件内容,并将文件内容转换为 Netcdf 库所需的格式,如下所示,

注意:targetstrings.txt 包含拉丁字符

op=open("targetstrings.txt",'rb')
targetStrings=cPickle.load(op)

Netcdf 库将内容作为字符串。加载文件时出现以下错误,

cPickle.UnpicklingError: invalid load key, 'A'.

请告诉我如何纠正这个错误,我已经用谷歌搜索但没有找到合适的解决方案。

有什么建议么,

4

2 回答 2

2

pickle 不是用于读取/写入通用文本文件,而是将 Python 对象序列化/反序列化为文件。如果你想读取文本数据,你应该使用Python 常用的 IO 函数

with open('targetstrings.txt', 'r') as f:
    fileContent = f.read()

如果,看起来,库只是想要一个字符串列表,将每一行作为一个列表元素,你只需要这样做:

with open('targetstrings.txt', 'r') as f:
    lines=[l for l in f]
# now in lines you have the lines read from the file
于 2012-04-25T12:54:19.667 回答
0

如前所述 - Pickle 不适合以这种方式使用。如果您需要手动编辑复杂的 Python 对象,这些对象将被读取并作为 Python 对象传递给另一个函数,那么还有许多其他格式可供使用 - 例如 XML、JSON、Python 文件本身。Pickle 使用 Python 特定的协议,虽然 note 是二进制的(在协议的版本 0 中),并且不会在 Python 版本之间发生变化,但这并不意味着此,甚至不是记录 Python 对象以进行持久性或通信的推荐方法(尽管它可以用于这些目的)。

于 2012-04-25T13:28:55.543 回答