Streamlit

python(파이썬)의 streamlit(스트림릿)에서 여러 파일 업로드

HooSL 2022. 1. 10. 11:54

스트림릿과 파일업로드에 필요한 import 해줍니다.

import streamlit as st
from PIL import Image
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('여러파일을 업로드 하는 앱')

    #사이드바용 메뉴
    menu = ['Image','CSV']
    choice = st.sidebar.selectbox('메뉴',menu)
    
    if choice == 'Image' :
        uploaded_files = st.file_uploader('이미지파일 업로드',type=['png','jpg','jpeg'],accept_multiple_files=True)

        if uploaded_files is not None:

            for file in uploaded_files:
                save_uploaded_file('temp_files',file)

                img = Image.open(file)
                st.image(img)

    ## CSV 파일명은 시간.csv 의 조합된 파일명으로 저장
    elif choice == 'CSV':
        uploaded_files = st.file_uploader('CSV파일 업로드',type=['csv'],accept_multiple_files=True)

        if uploaded_files is not None:

            for file in uploaded_files:
                current_time = datetime.now()
                current_time=current_time.isoformat().replace(':','_')
                file.name = current_time +'.csv'      #파일이름 변경
                save_uploaded_file('temp_csv',file)
if __name__ == '__main__':
    main()