gpt4 book ai didi

python - "UnicodeDecodeError: ' utf-8 ' codec can' t 解码字节 0x80",同时使用 pydrive 在 google colaboratory 上加载 pickle 文件

转载 作者:行者123 更新时间:2023-12-01 02:05:11 24 4
gpt4 key购买 nike

我刚开始使用 google colaboratory (colab) 和 pydrive 。我正在尝试使用 colab 加载“CAS_num_strings”中的数据,该数据是在我的 Google 驱动器上特定目录中的 pickle 文件中编写的:

pickle.dump(CAS_num_strings,open('CAS_num_strings.p', 'wb'))
dump_meta = {'title': 'CAS.pkl', 'parents': [{'id':'1UEqIADV_tHic1Le0zlT25iYB7T6dBpBj'}]}
pkl_dump = drive.CreateFile(dump_meta)
pkl_dump.SetContentFile('CAS_num_strings.p')
pkl_dump.Upload()
print(pkl_dump.get('id'))

其中 'id':'1UEqIADV_tHic1Le0zlT25iYB7T6dBpBj' 确保它具有由该 id 指定的特定父文件夹。最后一个打印命令给出了输出:

'1ZgZfEaKgqGnuBD40CY8zg0MCiqKmi1vH'

因此,我能够创建并转储 id 为“1ZgZfEaKgqGnuBD40CY8zg0MCiqKmi1vH”的 pickle 文件。现在,我想在另一个 colab 脚本中加载此 pickle 文件以用于不同的目的。为了加载,我使用命令集:

cas_strings = drive.CreateFile({'id':'1ZgZfEaKgqGnuBD40CY8zg0MCiqKmi1vH'})
print('title: %s, mimeType: %s' % (cas_strings['title'], cas_strings['mimeType']))
print('Downloaded content "{}"'.format(cas_strings.GetContentString()))

这给了我输出:

title: CAS.pkl, mimeType: text/x-pascal

---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-9-a80d9de0fecf> in <module>()
30 cas_strings = drive.CreateFile({'id':'1ZgZfEaKgqGnuBD40CY8zg0MCiqKmi1vH'})
31 print('title: %s, mimeType: %s' % (cas_strings['title'], cas_strings['mimeType']))
---> 32 print('Downloaded content "{}"'.format(cas_strings.GetContentString()))
33
34

/usr/local/lib/python3.6/dist-packages/pydrive/files.py in GetContentString(self, mimetype, encoding, remove_bom)
192 self.has_bom == remove_bom:
193 self.FetchContent(mimetype, remove_bom)
--> 194 return self.content.getvalue().decode(encoding)
195
196 def GetContentFile(self, filename, mimetype=None, remove_bom=False):

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

如您所见,它找到文件 CAS.pkl 但无法解码数据。我希望能够解决这个错误。据我了解,正常的 utf-8 编码/解码在正常的 pickle 转储和使用“wb”和“rb”选项加载期间可以顺利工作。然而在目前的情况下,转储后我似乎无法从上一步中创建的谷歌驱动器中的pickle文件加载它。错误存在于我的某个地方,无法指定如何在“return self.content.getvalue().decode(encoding)”处解码数据。我似乎无法从这里( https://developers.google.com/drive/v2/reference/files#resource-representations )找到要修改的关键字/元数据标签。任何帮助表示赞赏。谢谢

最佳答案

问题是 GetContentString 仅当内容是有效的 UTF-8 字符串 ( docs ) 时才有效,而您的 pickle 则不是。

不幸的是,您必须做一些额外的工作,因为没有 GetContentBytes - 您必须将内容保存到文件中并将其读回。这是一个工作示例: https://colab.research.google.com/drive/1gmh21OrJL0Dv49z28soYq_YcqKEnaQ1X

关于python - "UnicodeDecodeError: ' utf-8 ' codec can' t 解码字节 0x80",同时使用 pydrive 在 google colaboratory 上加载 pickle 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49145328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com