Hướng dẫn download csv file from azure blob storage python - tải xuống tệp csv từ trăn lưu trữ azure blob

Tôi đang cố đọc nhiều tệp CSV từ blob Storage bằng Python.

Mã mà tôi đang sử dụng là:

blob_service_client = BlobServiceClient.from_connection_string[connection_str]
container_client = blob_service_client.get_container_client[container]
blobs_list = container_client.list_blobs[folder_root]
for blob in blobs_list:
    blob_client = blob_service_client.get_blob_client[container=container, blob="blob.name"]
    stream = blob_client.download_blob[].content_as_text[]

Tôi không chắc cách chính xác để lưu trữ các tệp CSV được đọc trong khung dữ liệu gấu trúc.

Tôi đã cố gắng sử dụng:

df = df.append[pd.read_csv[StringIO[stream]]]

Nhưng điều này cho tôi thấy một lỗi.

Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này?

Henry Ecker

32.9K18 Huy hiệu vàng31 Huy hiệu bạc51 Huy hiệu đồng18 gold badges31 silver badges51 bronze badges

hỏi ngày 1 tháng 7 năm 2020 lúc 6:37Jul 1, 2020 at 6:37

Reco Jhonatanreco JhonatanReco Jhonatan

1.3934 Huy hiệu vàng20 Huy hiệu bạc34 Huy hiệu đồng4 gold badges20 silver badges34 bronze badges

0

Bạn có thể tải xuống tệp từ Blob Storage, sau đó đọc dữ liệu vào một dữ liệu gấu trúc từ tệp đã tải xuống.

from azure.storage.blob import BlockBlobService
import pandas as pd
import tables

STORAGEACCOUNTNAME= 
STORAGEACCOUNTKEY= 
LOCALFILENAME= 
CONTAINERNAME= 
BLOBNAME= 

#download from blob
t1=time.time[]
blob_service=BlockBlobService[account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY]
blob_service.get_blob_to_path[CONTAINERNAME,BLOBNAME,LOCALFILENAME]
t2=time.time[]
print[["It takes %s seconds to download "+blobname] % [t2 - t1]]

# LOCALFILE is the file path
dataframe_blobdata = pd.read_csv[LOCALFILENAME]

Để biết thêm chi tiết, xem ở đây.

Nếu bạn muốn thực hiện chuyển đổi trực tiếp, mã sẽ giúp. Bạn cần lấy nội dung từ đối tượng Blob và trong get_blob_to_text không cần tên tệp cục bộ.

from io import StringIO
blobstring = blob_service.get_blob_to_text[CONTAINERNAME,BLOBNAME].content
df = pd.read_csv[StringIO[blobstring]]

Đã trả lời ngày 1 tháng 7 năm 2020 lúc 7:14Jul 1, 2020 at 7:14

import pandas as pd
data = pd.read_csv['blob_sas_url']

URL Blob SAS có thể được tìm thấy bằng cách nhấp chuột phải vào tệp Blob của Portal Azure mà bạn muốn nhập và chọn tạo SAS. Sau đó, nhấp vào Tạo nút mã thông báo SAS và URL và sao chép URL SAS vào mã trên thay cho Blob_SAS_URL.

Đã trả lời ngày 2 tháng 8 năm 2021 lúc 10:58Aug 2, 2021 at 10:58

Bây giờ bạn có thể đọc trực tiếp từ BlobStorage thành một DataFrame Pandas:

mydata = pd.read_csv[
        f"abfs://{blob_path}",
        storage_options={
            "connection_string": os.environ["STORAGE_CONNECTION"]
    }]

trong đó blob_path là đường dẫn đến tệp của bạn, được đưa ra là

df = df.append[pd.read_csv[StringIO[stream]]]
0

Đã trả lời ngày 25 tháng 4 lúc 9:42Apr 25 at 9:42

2

Blockblobservice thực sự không được dùng. Tuy nhiên, câu trả lời của @Deepak không phù hợp với tôi. Dưới đây hoạt động:

import pandas as pd
from io import BytesIO
from azure.storage.blob import BlobServiceClient

CONNECTION_STRING= 
CONTAINERNAME= 
BLOBNAME= 

blob_service_client = BlobServiceClient.from_connection_string[CONNECTION_STRING]
container_client = blob_service_client.get_container_client[CONTAINERNAME]
blob_client = container_client.get_blob_client[BLOBNAME]

with BytesIO[] as input_blob:
    blob_client.download_blob[].download_to_stream[input_blob]
    input_blob.seek[0]
    df = pd.read_csv[input_blob]

Đã trả lời ngày 30 tháng 8 lúc 16:47Aug 30 at 16:47

lsl__lsl__lsl__

772 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges

Các blockblobservice như một phần của kho lưu trữ Azure bị không được dùng. Thay vào đó sử dụng bên dưới:

!pip install azure-storage-blob
from azure.storage.blob import BlobServiceClient
import pandas as pd

STORAGEACCOUNTURL= 
STORAGEACCOUNTKEY= 
LOCALFILENAME= 
CONTAINERNAME= 
BLOBNAME= 

#download from blob
blob_service_client_instance=BlobServiceClient[account_url=STORAGEACCOUNTURL, credential=STORAGEACCOUNTKEY]
blob_client_instance = blob_service_client_instance.get_blob_client[CONTAINERNAME, BLOBNAME, snapshot=None]
with open[LOCALFILENAME, "wb"] as my_blob:
    blob_data = blob_client_instance.download_blob[]
    blob_data.readinto[my_blob]

#import blob to dataframe
df = pd.read_csv[LOCALFILENAME]

LocalFilename giống như blobname

Đã trả lời ngày 24 tháng 8 lúc 22:58Aug 24 at 22:58

DeepakdeepakDeepak

371 Huy hiệu bạc8 Huy hiệu đồng1 silver badge8 bronze badges

1

Làm cách nào để tải xuống một tập tin từ bộ lưu trữ Azure Blob bằng Python?

Sau đó, làm theo các hướng dẫn dưới đây:..
Tài khoản lưu trữ tìm kiếm trong cổng thông tin Azure ..
Nhấp mới để tạo tài khoản lưu trữ mới ..
Điền vào tất cả các chi tiết ..
Sau khi tạo thành công tài khoản lưu trữ của bạn, hãy mở tài khoản lưu trữ của bạn và nhấp vào các khóa truy cập từ ngăn điều hướng bên trái để nhận thông tin đăng nhập tài khoản lưu trữ của bạn ..

Làm cách nào để đọc tệp CSV từ Azure Blob Storage bằng Python?

Dưới đây là các bước để làm theo quy trình này:..
Tải xuống dữ liệu từ Azure Blob với mẫu mã Python sau đây bằng dịch vụ Blob. Thay thế biến trong mã sau bằng các giá trị cụ thể của bạn: Bản sao Python. ....
Đọc dữ liệu vào một dữ liệu gấu trúc từ tệp đã tải xuống. Bản sao Python ..

Làm cách nào để tải xuống dữ liệu từ lưu trữ Azure Blob?

Trong hướng dẫn này, bạn học cách:..
Điều kiện tiên quyết để xuất dữ liệu từ lưu trữ Azure Blob với nhập/xuất Azure ..
Bước 1: Tạo một công việc xuất khẩu ..
Bước 2: Gửi các ổ đĩa ..
Bước 3: Cập nhật công việc với thông tin theo dõi ..
Bước 4: Nhận đĩa ..
Bước 5: Mở khóa các đĩa ..

Làm cách nào để truy cập lưu trữ Azure Blob trong Python?

Đang cài đặt..
Cài đặt các gói.Từ thư mục dự án, cài đặt các gói cho lưu trữ Azure Blob và thư viện máy khách nhận dạng Azure bằng lệnh PIP Install.....
Thiết lập khung ứng dụng.....
Tạo một container.....
Tải Blobs lên một container.....
Liệt kê các đốm màu trong một container.....
Tải về Blobs.....
Xóa một container ..

Bài Viết Liên Quan

Chủ Đề