본문 바로가기

Github & Streamlit

Streamlit 문법: 파일 저장/업로드, st.sidebar.selectbox(), st.fuke_uploader()

반응형
import streamlit as st
from PIL import Image
import pandas as pd

import os
from datetime import datetime

 

- 디렉토리 정보와 파일을 알려주면, 해당 디렉토리에 파일을 저장하는 함수

def save_uploaded_file(directory, file) :
    # 1.디렉토리가 있는지 확인하여, 없으면 디렉토리부터만든다.
    if not os.path.exists(directory) :
        os.makedirs(directory)
    # 2. 디렉토리가 있으니, 파일을 저장.
    with open(os.path.join(directory, file.name), 'wb') as f :
        f.write(file.getbuffer())
    return st.success("Saved file : {} in {}".format(file.name, directory))

def main():
    st.title('파일 업로드 프로젝트')

 

 

사이드바 만들기: st.sidebar.seletcbox()

    menu = ['Image','CSV','About']
    choice = st.sidebar.selectbox('메뉴',menu)

 

이미지 파일 업로드:  st.file_uploader(‘문구’, type=['jpg','png','jpeg'])

ㄴ 해당 타입 세개만 올릴 수 있도록 설정

ㄴ 파일을 처리하려면 변수로 받아줘야한다.

    if choice == menu[0]:
        st.subheader('이미지 파일 업로드')
        upload_file = st.file_uploader('이미지 파일 선택',type=['jpg','png','jpeg'])

 

- 업로드 파일의 파일명 변경해서 저장하기

# 파일명을 유니크하게 만들어서 저장해야 한다.

# 현재시간을 활용해서, 파일명을 만든다.

# 파일명에 콜론(:)이 들어가면 에러가 난다.

# 나는 지금 currentime을 파일명으로 만들고 싶다.

# 콜론을 언더스코어로 바꾸자

        if upload_file is not None : # 업로드 파일이 있으면
            print(upload_file.name)
            print(upload_file.size)
            print(upload_file.type)

            current_time = datetime.now()
            print(current_time)

            print(current_time.isoformat().replace(':','_'))

            new_filename = current_time.isoformat().replace(':','_')+ '.jpg'
            upload_file.name = new_filename
            save_uploaded_file('temp',upload_file)

 

반응형