Открепление файла с помощью os.path - PullRequest
0 голосов
/ 24 апреля 2020

Я получаю странную ошибку при запуске следующего кода:

import os
import urllib.request
import pandas as pd

data_url = 'URL FROM GOOGLE DRIVE DOWNLOAD'
file_name = 'mask.pkl'
data_dir = os.path.join('tempdata', 'test')
file_path = os.path.join(data_dir, file_name)
gdrive_file(file_path, data_url, data_dir)
x = pd.read_pickle(file_path) 
mask = x[0]

Где data_url - это ссылка для скачивания с Google Диска, но это просто файл .pkl, любой .pkl вы используйте для проверки это должно выдать ту же ошибку. Функция gdrive_file() определяется следующим образом:

def gdrive_file(file_path, data_url, data_dir):
    if file_path is True:
        pass
    if not os.path.isfile(file_path):
        print('Fetching example data file')
        os.makedirs(data_dir, exist_ok=True)
        return urllib.request.urlretrieve(data_url, file_path)

Все прекрасно работает до того момента, когда я использую pandas для чтения файла .pkl. Я получаю следующую ошибку:

    In [11]: pd.read_pickle(file_path)
    #---------------------------------------------
    UnpicklingError                           
    Traceback (most recent call last)
    <ipython-input-11-f996be11e8eb> in <module>
    ----> 1 pd.read_pickle(file_path)
    ~/anaconda3/envs/reborn/lib/python3.7/site-packages/pandas/io/pickle.py in read_pickle(filepath_or_buffer, compression)
    180                 # We want to silence any warnings about, e.g. moved modules.
    181                 warnings.simplefilter("ignore", Warning)
--> 182                 return pickle.load(f)
    183         except excs_to_catch:
    184             # e.g.
UnpicklingError: invalid load key, '<'.   

Я использовал этот же код для открытия других типов данных, у него просто проблема с открытием файла .pkl с использованием pd.read_pickle(file_path), и я не уверен, почему.

Любая помощь приветствуется, спасибо.

...