반응형
import os import streamlit as st import pandas as pd 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','About'] choice = st.sidebar.selectbox('메뉴',menu) |
if choice == menu[0]: # accept_multiple_files을 True로 셋팅하면, 여러 파일들을 한꺼번에 받을 수 있다. upload_files = st.file_uploader('이미지 파일을 선택', type=['jpg','png','jpeg'], accept_multiple_files=True) if upload_files is not None: for file in upload_files: # 파일명을 유니크하게 만들어서 저장: 현재시간을 활용 current_time = datetime.now() new_filename = current_time.isoformat().replace(':','_')+ '.png' file.name = new_filename # 파일을 여러개 올리면, 이 파일들을 temp에 저장하고, 이미지로 읽어서 화면에 표시! save_uploaded_file('temp',file) # 저장이 다 끝나면, 웹브라우져에 이미지 표시 for file in upload_files: img = Image.open(file) st.image(img) |
- 파일을 여러개 올리면, 이 파일들을 temp에 저장하고, 데이터프레임으로 읽어서 화면에 표시!
elif choice == menu[1]: upload_csv = st.file_uploader('CSV 파일을 선택',type = ['csv'], accept_multiple_files = True) if upload_csv is not None: for file in upload_csv: current_time = datetime.now() new_filename = current_time.isoformat().replace(':','_') + '.csv' file.name = new_filename save_uploaded_file('temp',file) for file in upload_csv: df = pd.read_csv(file) st.dataframe(df) if __name__ == '__main__': main() |
반응형
'Github & Streamlit' 카테고리의 다른 글
Streamlit 차트 그리기: fig = plt.figure() , st.pyplot(fig) (0) | 2022.06.01 |
---|---|
Streamlit 문법: 파일을 분리해서 만드는 앱 (0) | 2022.06.01 |
Streamlit 문법: CSV 파일 업로드: st.file_uploader(‘문구’, type=['csv']) (0) | 2022.05.24 |
Streamlit 문법: 파일 저장/업로드, st.sidebar.selectbox(), st.fuke_uploader() (0) | 2022.05.24 |
Streamlit 문법: st.date_input(), st.time_input(), st.color_picker(), st.text_input(‘문구’, type='password') (0) | 2022.05.24 |