Python 如何读取、写入和列出google bucket中的文件夹和文件?

Python 如何读取、写入和列出google bucket中的文件夹和文件?,python,google-cloud-storage,Python,Google Cloud Storage,我想用Python在Google云存储桶中读/写文件 假设我在gs://my_project/data中有一个文件夹 target_blob = blobs[0] # read as string read_output = target_blob.download_as_string() 如何列出上述文件夹中的文件夹和文件 如何读写文件 执行这些操作有几种方法。最常见的一种是使用本机的Google云存储API进行存储 具体而言,使用此API的步骤0是设置对GCP的身份验证,其中包括设置服

我想用Python在Google云存储桶中读/写文件

假设我在
gs://my_project/data
中有一个文件夹

target_blob = blobs[0]

# read as string
read_output = target_blob.download_as_string()
  • 如何列出上述文件夹中的文件夹和文件

  • 如何读写文件


执行这些操作有几种方法。最常见的一种是使用本机的Google云存储API进行存储

具体而言,使用此API的步骤0是设置对GCP的身份验证,其中包括设置服务帐户、下载其
json
凭据并设置指向它的环境变量:

export GOOGLE\u APPLICATION\u CREDENTIALS=“[PATH-TO-JSON-CREDS]”


1.列出文件和文件夹 在地面军事系统。只有bucket和blob/对象。然而,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:
   target_blob.upload_from_file(f)

为了列出/读取文件,@syltruong建议的代码因某些权限错误而对我无效。我不得不把密码改成

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

效果很好

我将
GOOGLE\u应用程序\u凭据设置为
C:\temp\abc.json
。我犯了个错误
chan.iam.gserviceaccount.com没有对my_项目的storage.objects.list访问权限。
这是因为我是项目编辑而不是所有者吗?如何解决这个问题?这完全是关于服务帐户的权限(而不是您的个人权限)。可以在GCP服务级别设置服务帐户的权限。所以我相信这个项目需要GCS编辑权限。我不能改变角色。我该怎么办?您需要请求项目管理员授予您权限,即
blob。从\u文件(f)
上载\u
blob
来自何处?