Python 在CloudML中读取Tensorflow中的pickle文件
我在尝试读取pandas pickle时出错,例如Python 在CloudML中读取Tensorflow中的pickle文件,python,pandas,tensorflow,google-cloud-ml,Python,Pandas,Tensorflow,Google Cloud Ml,我在尝试读取pandas pickle时出错,例如df.to_pickle()方法,该方法存储在Google云存储中。我正在努力做到以下几点: path_to_gcs_file = 'gs://xxxxx' f = file_io.FileIO(path_to_gcs_file, mode='r').read() train_df = pd.read_pickle(f) f.close() 我得到以下错误: UnicodeDecodeError: 'utf-8' codec can't dec
df.to_pickle()
方法,该方法存储在Google云存储中。我正在努力做到以下几点:
path_to_gcs_file = 'gs://xxxxx'
f = file_io.FileIO(path_to_gcs_file, mode='r').read()
train_df = pd.read_pickle(f)
f.close()
我得到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
或者,我尝试:
f = BytesIO(file_io.read_file_to_string(path_to_gcs_file, binary_mode=True))
train_df = pd.read_pickle(f)
它可以在本地工作,但不能在CloudML上工作
f = file_io.read_file_to_string(path_to_gcs_file, binary_mode=True)
train_df = pd.read_pickle(f)
给我一个错误:
AttributeError:“bytes”对象没有属性“seek”您应该可以不用使用上下文管理器,但我认为您这样做是为了结束证书,因此您应该通过api下载该文件
pip install --upgrade google-cloud-storage
然后
从这个答案中可以看出:
您应该可以不用使用上下文管理器,但我认为您这样做是在结束证书,因此您应该通过api下载文件
pip install --upgrade google-cloud-storage
然后
从这个答案中可以看出:
pandas.read\u pickle
接受路径作为第一个参数;您正在传递一个文件
对象(文件.FileIO
)和一个字节
对象(读取到字符串
)
到目前为止,我还没有找到一种使用pandas直接从GCS读取pickle对象的方法,因此您必须将其复制到机器上。您可以使用文件\u io.copy
进行以下操作:
file_io.copy('gs://xxxx', '/tmp/x.pkl')
train_df = pd.read_pickle('/tmp/x.pkl')
pandas.read\u pickle
接受路径作为第一个参数;您正在传递一个文件
对象(文件.FileIO
)和一个字节
对象(读取到字符串
)
到目前为止,我还没有找到一种使用pandas直接从GCS读取pickle对象的方法,因此您必须将其复制到机器上。您可以使用文件\u io.copy
进行以下操作:
file_io.copy('gs://xxxx', '/tmp/x.pkl')
train_df = pd.read_pickle('/tmp/x.pkl')
我发现UnicodeDecodeError:“ascii”编解码器无法对6488位置的字节0xff进行解码:序号不在范围(128)内。我猜这可能是python版本的问题?我也在使用
df.to_pickle()
创建pickle。您是否尝试过上述方法?pickle.load()将返回一个df对象如果原始转储对象是dfYes,您的确切代码会给出错误I commentedI查找字节,它是“mhmzg==”,看起来像证书的结尾。有没有可能你也拿到了安全证书?你能用一个原始test.txt文件试试吗?我发现UnicodeDecodeError:“ascii”编解码器无法对6488位的字节0xff进行解码:序号不在范围内(128)。我猜这可能是python版本的问题?我也在使用df.to_pickle()
创建pickle。您是否尝试过上述方法?pickle.load()将返回一个df对象如果原始转储对象是dfYes,您的确切代码会给出错误I commentedI查找字节,它是“mhmzg==”,看起来像证书的结尾。有没有可能你也拿到了安全证书?你能用一个原始的test.txt文件试试吗?我得到了错误:ImportError:读取pickle时没有名为index.base的模块我也在尝试:`f=file\u io.FileIO(path\u to\u gcs,mode='r')`和train\u df=pickle.load(f)
而且它也不工作…UnicodeDecodeError:“utf-8”编解码器无法解码位置0处的字节0x80:无效的start bytedid您尝试mode='rb'
?我得到错误:ImportError:读取pickle时没有名为index.base的模块我也在尝试:`f=file\u io.FileIO(路径到\u gcs,mode='r')`和train\u df=pickle.load(f)
而且它也不起作用…UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0x80:无效的起始字节ID是否尝试模式='rb'
?