我想使用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
中有一个文件夹。
如何列出上述文件夹中的文件夹和文件?
如何读写文件?
答案 0 :(得分:4)
有几种方法可以执行这些操作。最常见的一种方法是将本地Google Cloud Storage API用于Python。
特别是,要使用此API的第0步是为GCP设置身份验证,这包括设置服务帐户,下载其json
凭据并设置环境变量指向对此:
export GOOGLE_APPLICATION_CREDENTIALS="[PATH-TO-JSON-CREDS]"
在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/'))
要读取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/'))
效果很好。