【问题标题】:Read and Write csv and other file formats to Google Cloud Storage with Pandas使用 Pandas 将 csv 和其他文件格式读写到 Google Cloud Storage
【发布时间】:2020-05-11 18:14:16
【问题描述】:
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 文件,因为它会引发文件未找到错误。我安装并导入了 pandas 0.25 版和 gcsfs。关于如何完成的任何指示

【问题讨论】:

    标签: python-3.x pandas google-cloud-platform google-cloud-storage


    【解决方案1】:

    使用gcsfs,您需要进行一些设置,特别是打开一个类似文件的对象,然后您可以读取或写入该对象。请查看documentation

    import gcsfs
    fs = gcsfs.GCSFileSystem(project='my-google-project')
    with fs.open('my-bucket/my-file.txt', 'rb') as f:
        print(f.read())
    

    另外请注意,您可能需要进行身份验证才能访问所需的项目及其存储桶。如果您的程序在 Google Compute Engine (GCE) 中运行,则 GCE VM 将需要 storage-rw 范围(或另一个暗示 storage-rw 的范围),并且服务帐户将需要 Storage Object Admin 权限。

    Python 程序访问 Google Cloud Storage (GCS) 的更典型方式是:

    1. 安装 GCS Python client library 并调用该库的 API,例如将文件上传到 GCS blob(又名对象;它与文件最接近的东西)。同样,您需要正确的范围和权限。它没有实现gs:// 路径名。
    2. Shell 到gsutil 命令行调用以将本地文件复制到GCS 或从GCS 复制。在这种情况下,您提供gs:// 路径名。 (在 Python 3 中,我将使用 subprocess 内置库进行脱壳。在 Python 2 中,我将使用从 PYPI 安装的 subprocess32 库,这是同一库的反向移植版本,但有错误修复。)
    3. 安装gcsfuse,运行它将GCS存储桶(可选地缩小到特定的“子目录”)安装到本地目录。然后读取/写入该本地目录中的文件。

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

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

    请阅读gcsfuse documentation,了解其语义与文件系统有何不同,尽管gcsfuse 已尽最大努力弥合差距。

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2020-04-19
      • 2016-07-18
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多