首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GCS -直接将中的文本文件读入python

GCS -直接将中的文本文件读入python
EN

Stack Overflow用户
提问于 2018-01-16 02:25:46
回答 5查看 80.5K关注 0票数 33

我现在觉得有点蠢。我一直在阅读大量的文档和堆叠溢出的问题,但我无法正确地理解。

我有一个关于谷歌云存储的文件。它是在一个桶‘测试_桶’。在这个桶中有一个文件夹,‘temp_ files _test.txt’,它包含两个文件,一个名为'test.txt‘的.csv文件和一个名为'test.csv’的.csv文件。这两个文件只是因为我尝试使用这两个文件,但是结果是相同的。

文件中的内容是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hej
san

我希望能把它读给蟒蛇听,就像我在当地人身上做的那样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
textfile = open("/file_path/test.txt", 'r')
times = textfile.read().splitlines()
textfile.close()
print(times)

这给

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['hej', 'san']

我试过用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from google.cloud import storage

client = storage.Client()

bucket = client.get_bucket('test_bucket')

blob = bucket.get_blob('temp_files_folder/test.txt')

print(blob.download_as_string)

但它提供了输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<bound method Blob.download_as_string of <Blob: test_bucket, temp_files_folder/test.txt>>

如何获得文件中的实际字符串?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-01-16 02:37:58

download_as_string是一种方法,您需要调用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(blob.download_as_string())

更有可能的是,您希望将它赋值给一个变量,以便您只下载一次,然后打印它,并对它做任何您想做的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
downloaded_blob = blob.download_as_string()
print(downloaded_blob)
do_something_else(downloaded_blob)
票数 39
EN

Stack Overflow用户

发布于 2020-07-29 06:51:48

方法'download_as_string()‘将以字节的形式读取内容。

下面是一个处理.csv文件的示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import csv
from io import StringIO

from google.cloud import storage

storage_client = storage.Client()
bucket = storage_client.get_bucket(YOUR_BUCKET_NAME)

blob = bucket.blob(YOUR_FILE_NAME)
blob = blob.download_as_string()
blob = blob.decode('utf-8')

blob = StringIO(blob)  #tranform bytes to string here

names = csv.reader(blob)  #then use csv library to read the content
for name in names:
    print(f"First Name: {name[0]}")
票数 15
EN

Stack Overflow用户

发布于 2021-08-26 05:13:02

根据文档(https://googleapis.dev/python/storage/latest/blobs.html),在编写本文档(2021/08)时,download_as_string方法是download_as_byte方法的折旧别名,该方法按照名称的建议返回一个byte对象。

您可以使用download_as_text方法返回str对象。

对于实例,要从桶MYFILE下载文件MYBUCKET,并将其存储为utf-8编码的字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from google.cloud.storage import Client
client = Client()
bucket = client.get_bucket(MYBUCKET)
blob = bucket.get_blob(MYFILE)
downloaded_file = blob.download_as_text(encoding="utf-8")

然后,您也可以使用它来读取不同的文件格式。对于json,将最后一行替换为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
downloaded_json_file = json.loads(blob.download_as_text(encoding="utf-8"))

对于yaml文件,将最后一行替换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import yaml
downloaded_yaml_file = yaml.safe_load(blob.download_as_text(encoding="utf-8"))
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48279061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文