читать текстовый файл в хранилище BLOB-объектов Azure построчно, используя python - PullRequest
0 голосов
/ 03 мая 2019

Мне нужно построчно читать текстовые файлы из хранилища BLOB-объектов, выполнять некоторые операции и получать определенную строку во фрейме данных. Я пробовал различные способы чтения файла построчно. Есть ли способ прочитать текстовый файл из строки-строки BLOB-объекта, выполнить операции и вывести определенную строку точно так же, как readlines (), пока данные находятся в локальном хранилище?

candidate_resume = 'candidateresumetext'
block_blob_service = BlockBlobService(account_name='nam', account_key='key')
generator2 = block_blob_service.list_blobs(candidate_resume)
#for blob in generator2:
   #print(blob.name)
for blob in generator2:
    blob2 = block_blob_service.get_blob_to_text(candidate_resume,blob.name)
    #print(blob2)

    #blob_url=block_blob_service.make_blob_url(candidate_resume, blob.name)
    #print(blob_url)

    #blob3 = block_blob_service.get_blob_to_stream(candidate_resume,blob.name,range)
    blob3 = blob2.split('.')
    with open(blob.name,encoding = 'utf-8') as file:
        lines = file.readlines()
        for line in blob3:      
            if any(p in years_list for p in line ):
                if any(p in months_list for p in line):    
                    print(line)

1 Ответ

0 голосов
/ 06 мая 2019

Метод get_blob_to_text является правильным, и вы можете следовать приведенному ниже образцу кода (вы можете внести некоторые изменения, если он не соответствует вашим потребностям). И вы не можете использовать with open() as file, поскольку там нет реального файла.

#read the content of the blob(assume it's a .txt file)
str1 = block_blob_service.get_blob_to_text(container_name,blob_name)

#split the string str1 with newline.
arr1 = str1.content.splitlines()

#read the one line each time.
for a1 in arr1:
    print(a1)
...