使用熊猫读取csv和其他文件格式到Google Cloud Storage

问题描述 投票:0回答:1
def get_config_files(self):
       dict_path = 'word.pkl'
       self.kw_ns = ConfigParser()
       self.kw_ns.add_section('Paths')
       self.kw_ns.set('Paths','new_df1','gs://'+filepath, encoding='utf-8')
       self.kw_ns.set('Paths','dictionary','gs://'+dict_path)
       new_df1 =  pd.read_csv(self.kw_ns.get('Paths','new_df1'))
       dict = pickle.load(open(self.abs_path+self.kw_ns.get('Paths','dictionary'), 'rb'))

我无法读取csv或pickle文件,因为它会抛出文件未找到错误。我安装和导入了熊猫0.25版和gcsfs。关于如何实现的任何指针

python-3.x pandas google-cloud-platform google-cloud-storage
1个回答
0
投票

您可以通过以下任意一种方式访问​​Google云存储(GCS):

  1. Shell封装为gsutil命令行调用,以将本地文件复制到GCS或从GCS复制本地文件。在这种情况下,您提供gs://路径名。 (在Python 3中,我将使用subprocess内置库进行外壳处理。在Python 2中,我将使用从PYPI安装的subprocess32库,该库是同一个库的向后移植版本,带有错误)修复。)
  2. 安装gcsfuse,运行它以将GCS存储桶(可以选择缩小到特定的子目录)安装到本地目录。然后读取/写入该本地目录中的文件。
  3. 安装GCS Python客户端库并调用该库的API,例如将文件上传到GCS Blob(又称对象;它与文件最接近的东西)。它没有将gs://路径名实现为您可以使用Python文件I / O打开,读取或写入的某种特殊路径名。

GCS实际上是一个平面对象存储,而不是文件系统。例如。它不支持文件同时读取和写入。只是原子读取或写入Blob。

GCS实际上没有目录,只有包含斜杠字符的路径。使用gcsfuse,您可以使用--implicit-dirs来安装存储桶,在这种情况下,它会伪造目录(并且运行非常缓慢),否则,您必须拥有“目录占位符”(名称长度为/的0长度对象) )。如果没有--implicit-dirs,它将在某些操作期间创建占位符,但什至看不到没有它们的“子目录”。

即使gcsfuse尽力弥合差距,也请阅读gcsfuse文档,以了解语义与文件系统的区别。

您不能直接将GCS视为文件系统。您最接近的是使用gcsfuse支架时。

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