以下代码片段摘自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')
否,我可以从命令行运行:
$ python path/file.py
在我的终端中,所述存储桶中的文件被打印出来。太好了,它起作用了! 然而,这并不是我的目标。我想要打开一个文件并采取行动。例如:
df = pd.read_excel(filename)
print(df.iloc[0])
但是,当我将路径传递给上面的文件路径时,返回的错误为无效的文件路径。因此,我确信存在某种特定于GCP的函数调用来实际访问这些文件.
我应该运行哪些命令?
编辑:此视频https://www.youtube.com/watch?v=ED5vHa3fE1Q展示了打开文件的技巧,在此过程中需要使用StringIO。但它不支持EXCEL文件,因此不是有效的解决方案。
read_excel()目前不支持谷歌云存储文件路径,但可以读取字节数据。
pandas.read_excel(io,Sheet_Name=0,Header=0,Names=None, INDEX_COOL=NONE,USECOLS=NONE,EXCEZE=FALSE,DTYPE=NONE,ENGINE=NONE, Converters=NONE、TRUE_VALUES=NONE、FALSE_VALUES=NONE、SKIPROWS=NONE、 NROWS=NONE,NA_VALUES=NONE,KEEP_DEFAULT_NA=TRUE,NA_过滤=TRUE, VERBOSE=FALSE,PARSE_DATES=FALSE,DATE_PARSER=NONE,千位=NONE, Comment=None,Skipfooter=0,Convert_Float=True,MANGLE_DUPE_COLS=True, STORAGE_OPTIONS=无)参数:io:字符串、字节、ExcelFile、xlrd.Book、Path Object、或 类文件对象
您可以做的是使用blob对象,然后使用download_as_bytes()将该对象转换为字节。
将此Blob的内容作为字节对象下载。
对于此示例,我只使用了random sample 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)
测试已完成:
这篇关于使用PANAS从命令行打开存储在GCS中的Excel文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!