GCS - 直接从Google云端存储中读取文本文件到python中

时间:2018-01-16 10:25:47

标签: python google-cloud-storage

我现在觉得有点蠢。我一直在阅读大量的文档和stackoverflow问题,但我无法做到。

我在Google云端存储上有一个文件。它在一个桶中,在test_bucket'中。在这个存储桶中有一个文件夹,' temp_files_folder',它包含两个文件,一个名为' test.txt'的.txt文件。和一个名为' test.csv'的.csv文件。这两个文件只是因为我尝试使用两个文件,但结果是相同的。

文件中的内容是

hej
san

我希望将它读入python,就像我在

的本地一样
textfile = open("/file_path/test.txt", 'r')
times = textfile.read().splitlines()
textfile.close()
print(times)

给出了

['hej', 'san']

我尝试过使用

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)

但它给出了输出

<bound method Blob.download_as_string of <Blob: test_bucket, temp_files_folder/test.txt>>

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

3 个答案:

答案 0 :(得分:11)

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

print(blob.download_as_string())

更有可能的是,您希望将其分配给变量,以便您下载一次,然后可以打印它并随意执行任何其他操作:

downloaded_blob = blob.download_as_string()
print(downloaded_blob)
do_something_else(downloaded_blob)

答案 1 :(得分:4)

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

在下面的示例中处理.csv文件。

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]}")

答案 2 :(得分:2)

在阅读docx /文本文件时会得出结论

    from google.cloud import storage
    # create storage client
    storage_client = storage.Client.from_service_account_json('**PATH OF JSON FILE**')
    bucket = storage_client.get_bucket('**BUCKET NAME**')
    # get bucket data as blob
    blob = bucket.blob('**SPECIFYING THE DOXC FILENAME**')
    downloaded_blob = blob.download_as_string()
    downloaded_blob = downloaded_blob.decode("utf-8") 
    print(downloaded_blob)