jbu*_*_13 2 pandas google-cloud-storage
以下代码片段来自 Google 教程,它只是打印给定存储桶中 GCP 上的文件名称:
from google.cloud import storage
def list_blobs(bucket_name):
"""Lists all the blobs in the bucket."""
# bucket_name = "your-bucket-name"
storage_client = storage.Client()
# Note: Client.list_blobs requires at least package version 1.17.0.
blobs = storage_client.list_blobs(bucket_name)
for blob in blobs:
print(blob.name)
list_blobs('sn_project_data')
Run Code Online (Sandbox Code Playgroud)
不可以从命令行运行:
$ python path/file.py
Run Code Online (Sandbox Code Playgroud)
在我的终端中,该存储桶中的文件被打印出来。太棒了,它有效!然而,这并不是我的目标。我正在寻找打开一个文件并对其进行操作。例如:
$ python path/file.py
Run Code Online (Sandbox Code Playgroud)
但是,当我将路径传递给上面时,返回的错误为“无效的文件路径”。所以我确信有某种 GCP 特定函数调用来实际访问这些文件......
我应该运行什么命令?
编辑:该视频https://www.youtube.com/watch?v=ED5vHa3fE1Q展示了打开文件的技巧,并且在此过程中需要使用StringIO。但它不支持 Excel 文件,因此这不是一个有效的解决方案。
read_excel()目前不支持谷歌云存储文件路径,但它可以读取字节数据。
pandas.read_excel(io,sheet_name = 0,标题= 0,名称=无,index_col =无,usecols =无,squeeze = False,dtype =无,引擎=无,转换器=无,true_values =无,false_values =无, Skiprows =无,nrows =无,na_values =无,keep_default_na = True,na_filter = True,verbose = False,parse_dates = False,date_parser =无,数千=无,comment =无,skipfooter = 0,convert_float = True,mangle_dupe_cols =正确,storage_options=无)
参数:io:str、bytes、ExcelFile、xlrd.Book、路径对象或类文件对象
您可以做的是使用 blob 对象并使用download_as_bytes()将对象转换为字节。
将此 blob 的内容下载为字节对象。
在这个例子中,我只使用了一个随机样本 xlsx文件并阅读第一张表:
from google.cloud import storage
import pandas as pd
bucket_name = "your-bucket-name"
blob_name = "SampleData.xlsx"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)
data_bytes = blob.download_as_bytes()
df = pd.read_excel(data_bytes)
print(df)
Run Code Online (Sandbox Code Playgroud)