## 여러 파일을 업로드 하는 앱
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('여러 파일들을 업로드 하는 앱')
# 사이드바용 메뉴
menu = ['Image', 'csv', 'About']
choice = st.sidebar.selectbox('메뉴', menu)
if choice == 'Image' :
uploaded_files = st.file_uploader('이미지파일 업로드', type=['png', 'jpg', 'jpeg'],accept_multiple_files=True)
print(uploaded_files)
if uploaded_files is not None :
for file in uploaded_files :
save_uploaded_file('temp_files', file)
img = Image.open(file)
st.image(img)
## scv 파일 여러개 올리는 코드를 아래 작성하세요.
## scv 파일명은 시간.csv 의 조합된 파일명으로 저장하세요.
elif choice == 'csv' :
uploaded_files = st.file_uploader('csv파일 업로드', type='csv',accept_multiple_files=True)
print(uploaded_files)
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()
반응형
'Streamlit' 카테고리의 다른 글
[st] app11 : plt.figure, st.pyplot() 활용해서 차트 그려보기 (0) | 2021.12.14 |
---|---|
[st] app10 : 파일 분리해서 다른 파일에 있는 함수를 사용하기. (0) | 2021.12.14 |
[st] app8 : 파일 저장(업로드) 함수 만들기, directory, title, subheader, sidebar, selectbox, file_uploader, (0) | 2021.12.14 |
[st] app6 : text_input, text_area, number_input, date_input, time_input, password, color_picker (0) | 2021.12.14 |
[st] app5 : 이미지처리 image, video (0) | 2021.12.14 |