List_blobs ví dụ python

Hướng dẫn này sẽ giải thích cách sử dụng Python để liệt kê các tệp blob, tải tệp blob lên, sao chép tệp blob, kiểm tra xem tệp blob có tồn tại không, xóa tệp blob

Chuẩn bị

Chuẩn bị tài khoản Azure

Tạo một tài khoản lưu trữ mới

Lấy chuỗi kết nối

Nhấp vào [Khóa truy cập] ở khung bên trái và nhấp vào nút [Hiển thị] bên dưới phần

export AZURE_STORAGE_CONNECTION_STRING=""
6 để hiển thị chuỗi kết nối

Nhấp vào nút sao chép để sao chép chuỗi kết nối

Đặt biến môi trường

  • các cửa sổ

setx AZURE_STORAGE_CONNECTION_STRING ""

  • Linux và macOS

export AZURE_STORAGE_CONNECTION_STRING=""

Các tệp danh sách lưu trữ blob azure của Python

Ví dụ: chúng tôi có tệp sau trong thư mục cục bộ. Chúng tôi sẽ tải lên test2. txt vào thư mục đã chỉ định trong vùng chứa

Gần đây tôi đã làm việc trong một dự án kết hợp hai niềm đam mê lớn nhất của cuộc đời tôi. mã hóa và meme. Tất nhiên, dự án là một chatbot. một người bạn tưởng tượng vui vẻ ngồi trong phòng trò chuyện mà bạn chọn và trung thành chờ đợi cuộc gọi của bạn, gửi meme bất cứ khi nào bạn có thể yêu cầu họ. Trong một số trường hợp, bot sẽ quét internet để tìm các meme mới ra lò, nhưng cũng có nhiều trường hợp các meme mong muốn sẽ dễ đoán hơn, cụ thể là từ một tập hợp con các meme được xác định trước được lưu trữ trên đám mây có thể được cập nhật động. Đây là nơi Google Cloud Storage xuất hiện

Google Cloud Storage là một giải pháp thay thế tuyệt vời cho các giải pháp lưu trữ đã có từ lâu [chẳng hạn như S3], giải pháp dường như đã khiến chúng tôi bị xiềng xích từ trước khi chúng tôi có thể nhớ được. Ngoài việc cung cấp GUI sạch hơn [không có quyền IAM tinh vi hoặc cơn ác mộng về cấu hình CORS], Google Cloud Storage cung cấp một cách đơn giản để tìm nạp, sao chép và xóa dữ liệu của bạn theo chương trình thông qua các thư viện ứng dụng khách đơn giản bằng ngôn ngữ bạn chọn

Tôi cũng là một người yêu thích Python giống như bạn, vì vậy bạn sẽ không thất vọng khi biết rằng SDK Python lưu trữ đám mây của Google đã nhận được Dấu phê duyệt Không hoàn toàn gây phiền nhiễu chính thức của tôi. Khi so sánh với thư viện tương đương Boto3 cồng kềnh hơn của AWS, rõ ràng google-cloud-storage là một thư viện được viết với mục đích rõ ràng và dễ sử dụng

Nếu bạn là người đọc cũ, bạn có thể nhớ rằng chúng tôi thực sự đã đề cập đến google-cloud-storage trong một hướng dẫn trước đó, khi chúng tôi hướng dẫn cách quản lý tệp trong GCP bằng Python. Nếu bạn cảm thấy thoải mái khi tự thiết lập bộ chứa GCP Storage, phần đầu tiên này có thể hơi lặp lại

Bắt đầu thiết lập

Thiết lập nhóm Google Cloud đủ đơn giản để bỏ qua các chi tiết, nhưng có một số điều đáng nói. Đầu tiên trong danh sách của chúng tôi. chúng ta cần đặt quyền cho bộ chứa của mình

Đặt quyền cấp nhóm

Làm cho các nhóm có thể truy cập công khai là một điều tối kỵ trong phần lớn các trường hợp; . Vì tôi đang làm việc với các meme mà tôi đã đánh cắp từ các nguồn khác nên tôi không phiền khi nhóm này có thể truy cập công khai

Theo mặc định, quyền cấp bộ chứa không được bật trên bộ chứa mới [bộ chứa mới tuân theo quyền cấp đối tượng]. Thay đổi điều này có thể là một chút khó khăn để tìm lúc đầu. chúng ta cần nhấp vào nhóm lựa chọn của mình và lưu ý lời nhắc ở đầu màn hình

Các bộ chứa mới sẽ nhắc bạn cấp quyền ở cấp bộ chứa

Nhấp vào "bật" sẽ mở bảng điều khiển bên ở bên phải màn hình của bạn. Để bật các tệp có thể xem công khai, chúng tôi cần đính kèm vai trò Trình xem đối tượng lưu trữ với từ khóa có tên allUsers [allUsers là một loại "thành viên" dành riêng có nghĩa là "mọi người trên toàn thế giới]

Tìm thông tin nhóm của chúng tôi

Khi chúng tôi truy cập vào bộ chứa của mình theo chương trình, chúng tôi sẽ cần một số thông tin về bộ chứa của chúng tôi như URL của bộ chứa [chúng tôi cần thông tin này để thực sự biết vị trí các mục trong bộ chứa của chúng tôi sẽ được lưu trữ]. Thông tin chung về nhóm của chúng tôi có thể được tìm thấy trong tab "tổng quan", hãy gỡ phần này xuống

Để truy cập các tệp chúng tôi sửa đổi trong nhóm của mình, bạn cần biết URL

Tạo khóa dịch vụ

Cuối cùng, chúng ta cần tạo khóa dịch vụ JSON để cấp quyền cho tập lệnh của mình. Kiểm tra trang thông tin đăng nhập trong bảng điều khiển GCP của bạn và tải xuống tệp JSON chứa thông tin đăng nhập của bạn. Hãy nhớ đừng phạm tội này ở bất cứ đâu

Định cấu hình tập lệnh của chúng tôi

Chúng ta hãy bắt đầu mã hóa, phải không?

Tôi sẽ thiết lập dự án của chúng tôi với một cấu hình. py chứa thông tin liên quan mà chúng tôi sẽ cần làm việc với

"""Google Cloud Storage Configuration."""
from os import environ


# Google Cloud Storage
bucketName = environ.get['GCP_BUCKET_NAME']
bucketFolder = environ.get['GCP_BUCKET_FOLDER_NAME']

# Data
localFolder = environ.get['LOCAL_FOLDER']
  • """Programatically interact with a Google Cloud Storage bucket."""
    from google.cloud import storage
    from config import bucketName, localFolder, bucketFolder
    
    ...
    1 là tên đã đặt của thùng của chúng tôi. Google-cloud-storage tương tác với các nhóm bằng cách tìm kiếm các nhóm khớp với tên trong tài khoản GCP của bạn
  • """Programatically interact with a Google Cloud Storage bucket."""
    from google.cloud import storage
    from config import bucketName, localFolder, bucketFolder
    
    ...
    2 là một thư mục trong nhóm của chúng tôi mà chúng tôi sẽ làm việc với
  • """Programatically interact with a Google Cloud Storage bucket."""
    from google.cloud import storage
    from config import bucketName, localFolder, bucketFolder
    
    ...
    3 là nơi tôi đang giữ một loạt các tệp cục bộ để kiểm tra tải lên và tải xuống GCP

Khi đã xong, chúng ta có thể bắt đầu tập lệnh của mình bằng cách nhập các giá trị này

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...

Quản lý tệp trong nhóm GCP

Trước khi làm bất cứ điều gì, chúng ta cần tạo một đối tượng đại diện cho nhóm của mình. Tôi đang tạo một biến toàn cục có tên là thùng. Điều này được tạo bằng cách gọi phương thức

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
4 trên ứng dụng khách lưu trữ của chúng tôi và chuyển tên vùng chứa của chúng tôi

setx AZURE_STORAGE_CONNECTION_STRING ""
0

Để minh họa cách tương tác với Google Cloud Storage, chúng tôi sẽ tạo 5 chức năng khác nhau để xử lý các tác vụ phổ biến. tải lên, tải xuống, liệt kê, xóa và đổi tên tệp

Tải tệp lên

Chức năng đầu tiên của chúng tôi sẽ xem xét một thư mục cục bộ trên máy của chúng tôi và tải lên nội dung của thư mục đó

setx AZURE_STORAGE_CONNECTION_STRING ""
1

Điều đầu tiên chúng tôi làm là tìm nạp tất cả các tệp chúng tôi có trong thư mục cục bộ của mình bằng cách sử dụng

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
5. Chúng tôi xác minh rằng mỗi mục chúng tôi tìm nạp là một tệp [không phải thư mục] bằng cách sử dụng
"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
6

Sau đó, chúng tôi lặp qua từng tệp trong mảng tệp của chúng tôi. Chúng tôi đặt đích mong muốn của từng tệp bằng cách sử dụng

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
7, chấp nhận đường dẫn tệp mong muốn nơi tệp của chúng tôi sẽ tồn tại sau khi được tải lên GCP. Sau đó, chúng tôi tải tệp lên bằng
"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
8

setx AZURE_STORAGE_CONNECTION_STRING ""
6

Liệt kê tập tin

Biết những tệp nào tồn tại trong nhóm của chúng tôi rõ ràng là rất quan trọng

setx AZURE_STORAGE_CONNECTION_STRING ""
7

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
9 cho chúng tôi danh sách các tệp trong nhóm của chúng tôi. Theo mặc định, điều này sẽ trả về tất cả các tệp;

export AZURE_STORAGE_CONNECTION_STRING=""
0

Có vẻ như kiểm tra. csv nằm trong nhóm của chúng tôi, nhưng không nằm trong thư mục cục bộ của chúng tôi

Tải tập tin

Một tính năng của chatbot mà tôi đã xây dựng là tìm nạp một meme ngẫu nhiên cho mỗi từ khóa meme. Hãy xem chúng ta sẽ thực hiện điều này như thế nào

export AZURE_STORAGE_CONNECTION_STRING=""
1

Chúng tôi tận dụng chức năng

setx AZURE_STORAGE_CONNECTION_STRING ""
01 mà chúng tôi đã tạo để lấy danh sách các mục trong nhóm của chúng tôi. Sau đó, chúng tôi chọn một mục ngẫu nhiên bằng cách tạo chỉ mục ngẫu nhiên bằng cách sử dụng
setx AZURE_STORAGE_CONNECTION_STRING ""
02

Điều quan trọng cần lưu ý ở đây là

setx AZURE_STORAGE_CONNECTION_STRING ""
03 trả về một đối tượng "blob" trái ngược với một chuỗi [kiểm tra blob của chúng tôi với kết quả
setx AZURE_STORAGE_CONNECTION_STRING ""
04 là
setx AZURE_STORAGE_CONNECTION_STRING ""
05]. Đây là lý do tại sao chúng tôi thấy ________ 106 xuất hiện khi đặt tên tệp blob của bạn

Cuối cùng, chúng tôi tải xuống tệp mục tiêu của mình với

setx AZURE_STORAGE_CONNECTION_STRING ""
07

Xóa tập tin

Xóa một tệp đơn giản như

setx AZURE_STORAGE_CONNECTION_STRING ""
08

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
0

Đổi tên tập tin

Để đổi tên tệp, chúng tôi chuyển một đối tượng blob tới

setx AZURE_STORAGE_CONNECTION_STRING ""
09 và đặt tên mới thông qua thuộc tính
setx AZURE_STORAGE_CONNECTION_STRING ""
10

"""Programatically interact with a Google Cloud Storage bucket."""
from google.cloud import storage
from config import bucketName, localFolder, bucketFolder

...
3

Quản lý nhóm

Chúng tôi cũng có thể sử dụng google-cloud-storage để tương tác với toàn bộ nhóm

  • setx AZURE_STORAGE_CONNECTION_STRING ""
    
    11 tạo một nhóm mới với tên đã cho
  • setx AZURE_STORAGE_CONNECTION_STRING ""
    
    12 xóa một thùng hiện có

Ngoài ra còn có các cách để lập trình thực hiện những việc như truy cập thông tin chi tiết về một nhóm hoặc xóa tất cả các đối tượng bên trong một nhóm. Thật không may, những hành động này chỉ được hỗ trợ bởi API REST. Tôi không thấy những hành động này đặc biệt hữu ích, vì vậy sao cũng được

Chủ Đề