使用 python 读取 google 个存储桶文件
read google bucket files using python
我必须阅读 google xlsx 格式的存储桶文件。
存储桶中的文件结构如下
bucket_name
folder_name_1
file_name_1
folder_name_2
folder_name_3
file_name_3
python 片段看起来像
def main():
storage_client = storage.Client.from_service_account_json(
Constants.GCP_CRENDENTIALS)
bucket = storage_client.bucket(Constants.GCP_BUCKET_NAME)
blob = bucket.blob(folder_name_2 + '/' + Constants.GCP_FILE_NAME)
data_bytes = blob.download_as_bytes()
df = pd.read_excel(data_bytes, engine='openpyxl')
print(df)
def function1():
print("no file in the folder") # sample error
在上面的代码片段中,我试图打开 folder_name_2
,它 returns 一个错误,因为没有要读取的文件。
我需要使用 function1
在任何文件夹中没有文件时打印错误,而不是抛出错误。
有什么想法吗?
我不熟悉 GCP API,但你会想要按照以下方式做一些事情:
try:
blob = bucket.blob(folder_name_2 + '/' + Constants.GCP_FILE_NAME)
data_bytes = blob.download_as_bytes()
except Exception as e:
print(e)
https://docs.python.org/3/tutorial/errors.html#handling-exceptions
我不确定你的最终目标是什么,但另一个逻辑是列出存储桶中的可用资源,并对其进行处理。
首先,让我们定义一个函数来列出存储桶中的可用资源。 如果您想将研究限制在存储桶内的子文件夹中,您可以添加前缀。
def list_resource(client, bucket_name, prefix=''):
path_files = []
for blob in client.list_blobs(bucket_name, prefix=prefix):
path_files.append(blob.name)
return path_files
现在您可以处理您的 xlsx 文件了:
for resource in list_resource(storage_client, Constants.GCP_BUCKET_NAME):
if '.xlsx' in resource:
print(resource)
# Load blob and process your xlsx file
我必须阅读 google xlsx 格式的存储桶文件。 存储桶中的文件结构如下
bucket_name
folder_name_1
file_name_1
folder_name_2
folder_name_3
file_name_3
python 片段看起来像
def main():
storage_client = storage.Client.from_service_account_json(
Constants.GCP_CRENDENTIALS)
bucket = storage_client.bucket(Constants.GCP_BUCKET_NAME)
blob = bucket.blob(folder_name_2 + '/' + Constants.GCP_FILE_NAME)
data_bytes = blob.download_as_bytes()
df = pd.read_excel(data_bytes, engine='openpyxl')
print(df)
def function1():
print("no file in the folder") # sample error
在上面的代码片段中,我试图打开 folder_name_2
,它 returns 一个错误,因为没有要读取的文件。
我需要使用 function1
在任何文件夹中没有文件时打印错误,而不是抛出错误。
有什么想法吗?
我不熟悉 GCP API,但你会想要按照以下方式做一些事情:
try:
blob = bucket.blob(folder_name_2 + '/' + Constants.GCP_FILE_NAME)
data_bytes = blob.download_as_bytes()
except Exception as e:
print(e)
https://docs.python.org/3/tutorial/errors.html#handling-exceptions
我不确定你的最终目标是什么,但另一个逻辑是列出存储桶中的可用资源,并对其进行处理。
首先,让我们定义一个函数来列出存储桶中的可用资源。 如果您想将研究限制在存储桶内的子文件夹中,您可以添加前缀。
def list_resource(client, bucket_name, prefix=''):
path_files = []
for blob in client.list_blobs(bucket_name, prefix=prefix):
path_files.append(blob.name)
return path_files
现在您可以处理您的 xlsx 文件了:
for resource in list_resource(storage_client, Constants.GCP_BUCKET_NAME):
if '.xlsx' in resource:
print(resource)
# Load blob and process your xlsx file