我正在Google Cloud Platform上设置一个应用程序引擎。我想获取存储在存储桶中特定文件中的信息。
此特定文件是二进制文件,扩展名为“ .gst”,并且包含python字典。它在“ /bucket_name/dir_name/sub_dir_name/binary_file.gst”中可用
我已经尝试过一些类似的基本操作:
with cloudstorage.open(file_path) as cloudstorage_file:
contents = pickle.load(cloudstorage_file)
或这个
with cloudstorage.open(file_path) as cloudstorage_file:
contents = cloudstorage_file.read()
这是行不通的,而且我不知道执行此操作的正确方法,因此将不胜感激。我希望我已经足够清楚地寻求帮助。
答案 0 :(得分:0)
如果我正确理解,您正在尝试下载并释放存储在Cloud Storage Bucket中的文件。
下载对象(无论文件扩展名或文件类型如何)将其下载到文件后,您可以像往常一样对它进行修补。
答案 1 :(得分:0)
只有在可以从同一导入路径访问每个模块的情况下,Pickle才能反序列化对象,因此在不同应用程序之间使用pickle永远不是一个好主意。如果该文件是从AppEngine生成的,那么它应该可以正常工作。
即使对于相同的类,如果另一个应用程序在python 3上运行,则默认的pickle协议与python 2不兼容。
答案 2 :(得分:0)
不确定是否使用GAE,但是您可以使用Google Cloud Client库:
#pip install google-cloud-storage
import pickle
from google.cloud import storage
blob_name = "dir_name/sub_dir_name/binary_file.gst"
blob = storage.Client(project=project_name).get_bucket(bucket_name).blob(blob_name)
contents = pickle.loads(blob.download_as_string())
请注意,GCS实际上没有“文件夹”,因此在此示例中,不是project_name或bucket_name的所有内容都是blob_name。