이미지와 파일 업로드
5부에 온 걸 환영한다냥! 이제부터는 앱을 진짜처럼 다듬는 기술을 배운다냥. 첫 시간은 이미지와 파일 이다냥. 글자만 있던 앱에 사진이 들어가면 확 살아난다냥!
오늘의 학습 목표
st.image로 사진을 화면에 띄운다.st.file_uploader로 사용자가 파일을 올리게 한다.- 올린 이미지·CSV 를 받아서 처리한다.
pandas2.2 이상표(DataFrame)로 데이터를 다루기streamlit1.40 이상파이썬 코드로 웹 화면 만들기
설치하기 — 터미널에 그대로 붙여넣기
pip install "pandas>=2.2" "streamlit>=1.40"설치 확인 — 버전 번호가 찍히면 성공
python -c "import pandas; print(pandas.__version__)"
python -c "import streamlit; print(streamlit.__version__)"위 버전은 최소 기준이라, 더 높은 버전이 깔려 있으면 그대로 써도 된다냥. 버전이 안 찍히고 에러가 나면 설치가 안 된 거라 설치 명령을 다시 실행해보자냥.
1단계 · 이미지 띄우기 — image
st.image 는 사진을 화면에 보여준다냥. 인터넷 주소를 주거나, 내 컴퓨터의
파일 경로를 주면 된다냥.
import streamlit as st
st.image("https://placekitten.com/400/300", caption="귀여운 냥이라냥")caption 은 사진 설명이라냥
caption="..." 을 주면 사진 아래에 작은 설명이 붙는다냥. width=300
으로 크기도 정할 수 있다냥!
2단계 · 파일 올리게 하기 — file_uploader
st.file_uploader 는 사용자가 자기 파일을 올릴 수 있는 상자를
만든다냥. 올리기 전엔 None(아무것도 없음)이고, 올리면 그 파일이
담긴다냥.
import streamlit as st
uploaded = st.file_uploader("이미지를 올려주세요")
if uploaded is not None:
st.image(uploaded, caption="올린 사진이다냥")
else:
st.info("아직 올린 파일이 없다냥")올리기 전에는 None 이라냥
파일을 올리기 전에 uploaded 는 None 이다냥. 그래서
if uploaded is not None: 으로 올렸을 때만 처리해야 에러가 안
난다냥. 6강에서 배운 "빈 입력 확인" 과 같은 맥락이라냥!
3단계 · 올린 CSV 읽기
이미지뿐 아니라 CSV 파일도 올려서 바로 표로 볼 수 있다냥. 18강의
read_csv 를 올린 파일에 그대로 쓰면 된다냥!
import streamlit as st
import pandas as pd
uploaded = st.file_uploader("CSV 파일을 올려주세요", type="csv")
if uploaded is not None:
df = pd.read_csv(uploaded)
st.dataframe(df)type="csv" 로 파일 종류 제한
type="csv" 를 주면 CSV 파일만 올릴 수 있게 막아준다냥. 이미지면
type=["png", "jpg"] 처럼 리스트로 여러 개도 된다냥!
4단계 · 직접 해보기
미션 · 나만의 갤러리
st.file_uploader로 이미지를 올리게 하고- 올리면
st.image로 화면에 크게 보여주고 st.caption으로 파일 이름(uploaded.name)을 밑에 표시해보자냥.
내 사진을 올려서 바로 보이면 진짜 앱 같다냥!
복습 퀴즈
이미지와 파일까지 다룰 수 있게 됐다냥! 다음 시간엔 앱을 여러 페이지로 나누는 법을 배운다냥. 지금까지는 한 화면이었지만, 진짜 웹사이트는 여러 장으로 되어 있다냥!
