【发布时间】:2021-03-27 15:55:20
【问题描述】:
我需要读取当前位于 GCP 存储桶中的文件的前 20 行。我正在尝试通过带有 HTTP 触发器的 Google 函数读取文件的内容。我可以访问该文件,但是当我尝试使用“return data_string”返回内容以便我可以看到输出时,它不起作用。我不必返回该文件的全部内容,这就是为什么我只需要前 20 行。理想情况下,我想要一些命令来读取内容并获取文件的每一行并将其添加到一个数组中,然后我可以从中获取特定的行。如果我在我的开发 PC 上使用 Google 存储桶中的相同文件执行此操作并使用 open() 命令,它就可以正常工作。我可以阅读每一行并获取我想要的内容,但我需要通过 Google 函数对其进行测试。请帮忙!
这是我目前的代码。
storage_client = storage.Client()
#define bucket
bucket = storage_client.get_bucket(bucket_name)
#Blob: File name that will be saved.
blob = bucket.get_blob('LAS.las')
data_string = blob.download_as_string()
print(data_string)
return data_string
【问题讨论】:
-
doesn't works是什么意思? -
如果你有文本文件然后
data_string.split('\n')[:20]你有 20 行。如果您有小文件,那么一次读取所有文件(只需要向服务器发出一个请求)然后逐行读取(可能需要向服务器发出许多请求)会更快。 -
谢谢,我尝试添加此内容,但随后出现以下错误。我需要先转换它吗? data_split = data_string.split('\n')[:20] return data_split[0] line 35, in hello_world data_split = data_string.split('\n')[:20] TypeError: a bytes-like object is required,不是'str'
-
也许它会提供字节数据,你必须在拆分
data_string.decode().split('\n')[:20]之前decode()它。顺便说一句:如果你在return data_split[0]中使用[0],那么你只会得到第一行。如果你需要 20 行,那么你需要return data_split而没有[0]
标签: python arrays string google-cloud-functions google-cloud-storage