Python 升级到mac os catalina后Pickle加载不起作用
我有简单的代码来加载一个序列化的pickle文件,在升级到macos Catalina之前,该文件运行良好。现在,当我在Spyder的iPython控制台中运行代码时,控制台在第1行重新启动,所有变量都被清除,并且没有错误消息。loads语句之后也没有打印输出 我已经尝试将代码剥离到只加载行,并包括其他代码——什么都不运行。如果我注释掉pickle.loads行,其他所有内容都会正常运行。但我似乎无法对字节流进行反序列化。try/except也不起作用Python 升级到mac os catalina后Pickle加载不起作用,python,serialization,pickle,macos-catalina,Python,Serialization,Pickle,Macos Catalina,我有简单的代码来加载一个序列化的pickle文件,在升级到macos Catalina之前,该文件运行良好。现在,当我在Spyder的iPython控制台中运行代码时,控制台在第1行重新启动,所有变量都被清除,并且没有错误消息。loads语句之后也没有打印输出 我已经尝试将代码剥离到只加载行,并包括其他代码——什么都不运行。如果我注释掉pickle.loads行,其他所有内容都会正常运行。但我似乎无法对字节流进行反序列化。try/except也不起作用 print('here') # This
print('here') # This prints.
os.chdir(basedir+'Data/')
max_bytes = 2**31 - 1
bytes_in = bytearray(0)
input_size = os.path.getsize('[filename]')
with open('[filename]', 'rb') as f_in:
for _ in range(0, input_size, max_bytes):
bytes_in += f_in.read(max_bytes)
try:
tmp_df = pickle.loads(bytes_in)
except:
print('error') # This does not print.
print('loaded') # This does not print.
如果出现错误,我会收到一条错误消息,初始变量如max_bytes
应该保持加载状态,但它们都会重置。相反:
In [1]: runfile('[file]', wdir='[dir')
here
In [1]:
变量资源管理器为空,查询变量名称会引发
名称错误
如果直接运行代码(即不使用iPython)是否会出现问题?谢谢--我不确定,但我认为可能是文件中的错误。如果使用simple pickle.dump重新pickle数据,我可以使用pickle.load加载它。我还没有尝试过其他需要使用转储进行序列化的大型文件,幸运的是,这个文件较小。您仍然使用与以前相同版本的Python吗?默认的pickle协议取决于使用的Python和模块的确切版本。如果直接运行代码(即不使用iPython)是否会出现问题?谢谢,我不确定,但我认为可能是文件中的错误。如果使用simple pickle.dump重新pickle数据,我可以使用pickle.load加载它。我还没有尝试过其他需要使用转储进行序列化的大型文件,幸运的是,这个文件较小。您仍然使用与以前相同版本的Python吗?默认的pickle协议取决于所使用的Python和模块的确切版本。