如何读取,写入和列出Google存储桶中的文件夹和文件?

时间:2018-08-23 07:29:57

标签: python google-cloud-storage

我想使用Python读取/写入Google Cloud Storage存储桶中的文件。

假设我在 A B C D 0 11.4 1.3 2.0 NaN 1 11.4 1.3 NaN NaN 2 11.4 1.3 2.8 0.7 3 NaN NaN 2.8 0.7 中有一个文件夹。

  • 如何列出上述文件夹中的文件夹和文件?

  • 如何读写文件?

2 个答案:

答案 0 :(得分:4)

有几种方法可以执行这些操作。最常见的一种方法是将本地Google Cloud Storage API用于Python

特别是,要使用此API的第0步是为GCP设置身份验证,这包括设置服务帐户,下载其json凭据并设置环境变量指向对此:

export GOOGLE_APPLICATION_CREDENTIALS="[PATH-TO-JSON-CREDS]"


1。列出文件和文件夹

在GCS中,there is no notion of a "directory"/"folder"。只有存储桶和Blob /对象。不过,斑点名称中的/可用于模拟类似文件夹的层次结构。

要列出gs://my_project/data中的blob:

from google.cloud import storage

client = storage.Client()
bucket = client.bucket('my_project')

blobs = list(bucket.list_blobs(prefix='data/'))

2。读写文件

要读取gs://my_project/data中列出的第一个blob。

target_blob = blobs[0]

# read as string
read_output = target_blob.download_as_string()

要写入新的Blob,除了写入本地文件并从文件上传外,我发现没有其他方法。

target_blob = bucket.blob('new_blob.txt')

local_tmp_path = 'tmp.txt'

# write string
with open(local_tmp_path, 'w') as f:
   f.write('Hello World')

with open(local_tmp_path, 'r') as f:
   blob.upload_from_file(f)

答案 1 :(得分:0)

为了列出/读取文件,由于某些权限错误,@ syltruong建议的代码对我不起作用。我不得不将代码更改为

storage_client = storage.Client.from_service_account_json('./path_to_json')
bucket = storage_client.bucket(bucketname)
blobs = list(bucket.list_blobs(prefix='data/'))

效果很好。