끄적끄적 인턴생활 (2020)/슬랙봇 만들기(2020)

Blob_container_data_pull 샘플코드 분석

jellylucy 2022. 1. 17. 02:34

 

 

try :

 

1.

try:
    connect_str = os.getenv('AZURE_STORAGE_CONNECTION_STRING')
    print(connect_str)

    # Create the BlobServiceClient object which will be used to create a container client
    blob_service_client = BlobServiceClient.from_connection_string(connect_str)

    # Instantiate a ContainerClient
    container_client = blob_service_client.get_container_client(
        "smartwatchdata")

    blobs_filename_list = container_client.list_blobs()
 

(1) 연결키 환경변수에 넣기

(2) 환경변수로 blob 연결.

(3) 원하는 container(smartwatchdata) 연결하는 service_client 생성

 

(4) 들어간 container의 blob list 출력하기

 

 

스스로 여기까지 한 뒤 출력했었는데

출력에서 address 오류가 나서

이 코드를 참고하기로 했었다.

 

 

2. import re 이용한다.

 

"import re가 무엇일까?"

https://greeksharifa.github.io/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D(re)/2018/07/20/regex-usage-01-basic/

 

1. 정규표현식의 기초

일대일 매칭되는 문자

: 정규표현식 안에서, 바로 다음 절에서 설명하는 메타문자를 제외한 모든 문자 하나는 일반 문자열 하나와 매칭된다.

 

메타문자

: 어떤 프로그래밍 언어의 정규표현식이든 메타문자라는 것이 존재한다.

메타문자 '어떤 특수한 기능을 하는 문자'로 import 등 파이썬의 예약어와 비슷한 역할을 맡는 문자라고 생각하면 된다.

 

파이썬 re 모듈의 메타문자는 총 12개로

$()*+.?[\^{|

이들 매타문자는 각각


결국 import re를 써서

blob리스트 중에서 내가 원하는 이름 값만 있는 것들로 재배치 재정렬해서 출력하려고 사용한 것이다.

 

blob 들 중에 원하는 날짜값을 re.match로 이용해서 원하는 데이터 출력 위함

 


3. re.match() 아래 조건문 이해하기

 

(1) 코드에서 쓰인 re.match() 인자값 형식이 (폴더/파일명)으로 들어간다

이에 대한 의문점이 생겼는데.

 

breakpoint 을 이용해서

 

container_client.list_blobs()의 인자값의 속성을 보았다.

속성들 중 'name' 키를 가진 value의 값이 폴더/파일명.mp4으로 되었던 것 .

 

 

(2) watch_sn = blob_filename.name.split('/')[-1].split('_')[0] 코드 이해 못함

 

split 의 의미가 나눈다는 것을 알고 있었는데 [-1]의 의미와 spilt.split를 몰랐다.

 

1. blob_filename.name ==

'2020-12-09/20IHPA00104A_201209_114006_DF3B40F0A3EB.mp4'

 

2. split('/')[-1] ==

20IHPA00104A_201209_114006_DF3B40F0A3EB.mp4'

 

처음 안 사실 마지막의 인덱스의 값이 [-1]으로 쓰인다.. 구글링해도 안나오는디;

 

3. split('_')[0] ==

20IHPA00104A

 

호호.. 그렇구만!