Как передавать данные построчно из корзины в скрипт Python - PullRequest
1 голос
/ 30 сентября 2019

Я работаю с большими файлами данных, хранящимися в Google Cloud. Я использую скрипт Python, который сначала загружает большой двоичный объект, содержащий строки json, а затем открывает его для анализа данных построчно. Этот метод очень медленный, и я хотел бы знать, существует ли более быстрый способ сделать это. Из командной строки я могу использовать gsutil cat для потоковой передачи данных на стандартный вывод, есть ли аналогичный способ сделать это на Python?

Это то, что я сейчас делаю для чтения данных:

myClient = storage.Client()
bucket = myClient.get_bucket(bucketname)
blob = storage.blob.Blob(blobname, bucket)
current_blob.download_to_filename("filename.txt")

file = open("filename.txt", "r")
data = f.readlines()

for line in data:
    # Do stuff

Я хочу читать blob построчно, не дожидаясь загрузки.

Редактировать: я нашел этот ответ , но функция мне не ясна. Я не знаю, как читать потоковые строки.

1 Ответ

0 голосов
/ 30 сентября 2019

В ответе , который вы нашли , stream является файловым объектом, поэтому вы должны иметь возможность использовать его вместо открытия определенного имени файла. Примерно так (не проверено):

myClient = storage.Client()
bucket = myClient.get_bucket(bucketname)
blob = storage.blob.Blob(blobname, bucket)
stream = open('myStream','wb', os.O_NONBLOCK)
streaming = blob.download_to_file(stream)

for line in stream.readlines():
    # Do stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...