我需要读取当前位于GCP存储桶中的文件的前20行。我正试图通过带有HTTP触发器的Google函数读取文件的内容。我可以访问该文件,但当我试图通过使用";return data_string";,这样我就可以看到输出,但它不起作用。我不必返回该文件的全部内容,这就是为什么我只需要前20行。理想情况下,我想要一些命令来读取内容,获取文件的每一行,并将其添加到一个数组中,然后我可以从中获取特定的行。如果我在我的开发PC上用谷歌存储桶中的同一个文件来做这件事,并使用open((命令,它会很好地工作。我可以阅读每一行并获取我想要的内容,但我需要通过谷歌功能进行测试。请帮忙!
这是我目前掌握的代码。
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
如果需要20行,则可以使用.split('n')
将字符串拆分为多行,然后使用[:20]
获得20行。
似乎download_as_string()
给出了bytes
,如果你想确保它将使用utf-8
,你必须使用decode()
或decode('utf-8')
将其转换为unicode
。如果你在编码cp1250
时有文本,则decode('cp1250')
blob = bucket.get_blob('LAS.las')
data_string = blob.download_as_string()
# convert bytes to unicode
data_string = data_string.decode()
# convert string to list of lines
lines = data_string.split('n')
# return first 20 lines
return lines[:20]