打开在 python 2.7 中创建的 pickle 文件时出现问题

问题描述 投票:0回答:1

我有几个用 Python 2.7 编译的 pickle 文件,可以用 Python 3.11 中的 pandas 读取,但有一个无法加载。这是我遇到问题的代码部分:

import json
import pickle
import pandas as pd

with open('path', 'rb') as f:
    data = pickle.load(f)

出现以下错误:

  import pandas as pd
Traceback (most recent call last):
  File "path", line 7, in <module>
    data = pickle.load(f)
           ^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/copyreg.py", line 49, in _reconstructor
    obj = object.__new__(cls)
          ^^^^^^^^^^^^^^^^^^^
TypeError: object.__new__(BlockManager) is not safe, use BlockManager.__new__()

我读到这是一个关于创建pickle文件时使用的pandas版本的问题,但我尝试过的任何方法都不起作用,我想知道该文件是否只是损坏了。

我已经尝试过:

  1. 使用 Python 2.7 在虚拟实例上运行脚本,但我在使用 pandas 时遇到一些错误,提到它无法正常工作。
  2. 使用在线 pickle 到 json 转换器。
  3. 更新 pandas 并更新 pip。 还尝试了以下选项来读取泡菜:
    joblib.load(path)
    pd.read_pickle(path)
    没有选项允许我读取 pickle 文件。
python pandas python-2.7 pickle
1个回答
0
投票

试试这个:

import pandas as pd

with open('path_to_pickle_file', 'rb') as f:
    data = pd.read_pickle(f)

data.to_csv('path_to_csv_file.csv', index=False)

data = pd.read_csv('path_to_csv_file.csv')

© www.soinside.com 2019 - 2024. All rights reserved.