스트림릿과 판다스,파일업로드에 필요한 import 해줍니다.
from datetime import datetime
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']
choice = st.sidebar.selectbox('메뉴',menu)
if choice == 'Image':
st.subheader('이미지 파일 업로드')
#파일 업로드 코드 작성 복사 붙어넣기 해서 사용
image_file = st.file_uploader('이미지를 업로드 하세요',type=['png','jpg','jpeg'])
if image_file is not None :
#파일명 변경 후 저장
image_file.name = 'test.jpg'
#파일명을 현재시간의 조합으로 해서 만들기(안겹치게 하기 위해)
#예) 현재시간.jpg
current_time = datetime.now()
current_time = current_time.isoformat().replace(':','_')
image_file.name = current_time+'.jpg'
#파일을 저장할 수 있도록 위의 함수를 호출하자 여길 주석처리하면 파일 저장을 하지 않는다.
save_uploaded_file('temp',image_file)
#파일을 화면에 나오게하기
img = Image.open(image_file)
st.image(img,use_column_width=True)
elif choice == 'CSV':
st.subheader('CSV 파일 업로드')
data_file = st.file_uploader('CSV 파일 업로드',type=['csv'])
if data_file is not None:
#파일명을 test.csv 바꿔서 업로드 하는 코드 작성
data_file.name = 'test.csv'
# 현재시간으로 csv파일 저장
current_time = datetime.now()
current_time = current_time.isoformat().replace(':','_')
data_file.name = current_time+'.csv'
#파일 업로드 함수를 호출만 하면 된다.
save_uploaded_file('csv_files',data_file)
#csv파일을 화면에 나오게하기
df = pd.read_csv(data_file)
st.dataframe(df)
if __name__ == '__main__':
main()
'Streamlit' 카테고리의 다른 글
python(파이썬)의 streamlit(스트림릿)에서 클래스를 이용해 py파일 분리하기 (0) | 2022.01.10 |
---|---|
python(파이썬)의 streamlit(스트림릿)에서 여러 파일 업로드 (0) | 2022.01.10 |
python(파이썬)의 streamlit(스트림릿) 인터넷창 이름과 아이콘 변경 (0) | 2022.01.04 |
python(파이썬)의 streamlit(스트림릿) 다양한 input 함수들 (0) | 2022.01.04 |
python(파이썬)의 streamlit(스트림릿) 이미지, 비디오, 오디오 출력하기 (0) | 2022.01.03 |