Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打开旧pickle文件时出现问题_Python_Pandas_Pickle - Fatal编程技术网

Python 打开旧pickle文件时出现问题

Python 打开旧pickle文件时出现问题,python,pandas,pickle,Python,Pandas,Pickle,我正在尝试加载包含航空公司数据集()的旧pickle文件。泡菜很旧了,我拿不到它。如果我尝试: objects = [] with (open("airline.pickle", "rb")) as openfile: while True: try: objects.append(pickle.load(openfile)) except EOFError: brea

我正在尝试加载包含航空公司数据集()的旧pickle文件。泡菜很旧了,我拿不到它。如果我尝试:

objects = []
with (open("airline.pickle", "rb")) as openfile:
    while True:
        try:
            objects.append(pickle.load(openfile))
        except EOFError:
            break
我收到以下警告和错误:

FutureWarning: pandas.core.index is deprecated and will be removed in a future version.  The public classes are available in the top-level namespace.
  objects.append(pickle.load(openfile))
Traceback (most recent call last):
  File "c:\Users\LocalAdmin\surfdrive\Code\Python\Airline\pickleToCSV.py", line 9, in <module>
    objects.append(pickle.load(openfile))
TypeError: _reconstruct: First argument must be a sub-type of ndarray
FutureWarning:pandas.core.index已弃用,将在将来的版本中删除。公共类在顶级命名空间中可用。
objects.append(pickle.load(openfile))
回溯(最近一次呼叫最后一次):
文件“c:\Users\LocalAdmin\surfdrive\Code\Python\Airline\pickletosv.py”,第9行,在
objects.append(pickle.load(openfile))
TypeError:\u Reconstructure:第一个参数必须是ndarray的子类型
试着用熊猫是行不通的:

  File "C:\Users\LocalAdmin\surfdrive\Code\Python\Airline\Airline\lib\site-packages\pandas\io\pickle.py", line 203, in read_pickle
    return pickle.load(handles.handle)  # type: ignore[arg-type]
TypeError: _reconstruct: First argument must be a sub-type of ndarray

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\LocalAdmin\surfdrive\Code\Python\Airline\pickleToCSV.py", line 7, in <module>
    df = pd.read_pickle('airline.pickle')
  File "C:\Users\LocalAdmin\surfdrive\Code\Python\Airline\Airline\lib\site-packages\pandas\io\pickle.py", line 208, in read_pickle
    return pc.load(handles.handle, encoding=None)
  File "C:\Users\LocalAdmin\surfdrive\Code\Python\Airline\Airline\lib\site-packages\pandas\compat\pickle_compat.py", 
line 249, in load
    return up.load()
  File "C:\Users\LocalAdmin\AppData\Local\Programs\Python\Python39\lib\pickle.py", line 1212, in load
    dispatch[key[0]](self)
  File "C:\Users\LocalAdmin\AppData\Local\Programs\Python\Python39\lib\pickle.py", line 1725, in load_build
    for k, v in state.items():
AttributeError: 'tuple' object has no attribute 'items'
文件“C:\Users\LocalAdmin\surfdrive\code\Python\Airline\Airline\lib\site packages\pandas\io\pickle.py”,第203行,在read\u pickle中
返回pickle.load(handles.handle)#类型:ignore[arg type]
TypeError:\u Reconstructure:第一个参数必须是ndarray的子类型
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“c:\Users\LocalAdmin\surfdrive\Code\Python\Airline\pickletosv.py”,第7行,在
df=pd.read\u pickle('airline.pickle'))
文件“C:\Users\LocalAdmin\surfdrive\Code\Python\Airline\Airline\lib\site packages\pandas\io\pickle.py”,第208行,在read\u pickle中
返回pc.load(handles.handle,encoding=None)
文件“C:\Users\LocalAdmin\surfdrive\Code\Python\Airline\Airline\lib\site packages\pandas\compat\pickle\u compat.py”,
第249行,已加载
return up.load()
文件“C:\Users\LocalAdmin\AppData\Local\Programs\Python\Python39\lib\pickle.py”,第1212行,已加载
分派[键[0]](自身)
文件“C:\Users\LocalAdmin\AppData\Local\Programs\Python\Python39\lib\pickle.py”,第1725行,在load\u build中
对于处于状态的k,v.items():
AttributeError:“tuple”对象没有属性“items”

如何访问文件并将其保存到csv?我需要那里包含的数据。我使用的是熊猫1.2.4和python 3.6。

语法应该比您的示例更简单

with open("airline.pickle", "rb") as f:
    objects = pickle.load(f)

如果这失败了,那么我将看一看,它包含了一些对解码python2创建的pickle文件有用的可选参数。

首先,看起来您使用的是Python3.9而不是3.6(
…Python39\lib\pickle.py
)。第二,尝试使用与用于pickle文件的Python版本相同的Python版本,可能在库的较新版本中更改了pickle格式。“pickle非常旧”您对它被pickle的确切条件了解多少?这篇论文是2017年的,但数据可能较旧(范围为2013-2016年)