I feel kind of stupid right now. I have been reading numerous documentations and stackoverflow questions but I can't get it right.
I have a file on Google Cloud Storage. It is in a bucket 'test_bucket'. Inside this bucket there is a folder, 'temp_files_folder', which contains two files, one .txt file named 'test.txt' and one .csv file named 'test.csv'. The two files are simply because I try using both but the result is the same either way.
The content in the files is
hej san
and I am hoping to read it into python the same way I would do on a local with
textfile = open("/file_path/test.txt", 'r') times = textfile.read().splitlines() textfile.close() print(times)
which gives
['hej', 'san']
I have tried using
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)
but it gives the output
<bound method Blob.download_as_string of <Blob: test_bucket, temp_files_folder/test.txt>>
How can I get the actual string(s) in the file?
download_as_string
is a method, you need to call it.
print(blob.download_as_string())
More likely, you want to assign it to a variable so that you download it once and can then print it and do whatever else you want with it:
downloaded_blob = blob.download_as_string() print(downloaded_blob) do_something_else(downloaded_blob)
The method 'download_as_string()
' will read in the content as byte.
Find below an example to process a .csv file.
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]}")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With