기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 subprocess 모듈 완전 정복 🧩

Terminal command icon

파이썬 subprocess 모듈 완전 정복 🧩

subprocess 모듈은 외부 프로그램을 실행하고 결과를 캡처할 수 있는 핵심 도구입니다. 시스템 명령, 스크립트 호출 등을 파이썬 코드에서 유연하게 제어할 수 있어요.

1. 가장 간단한 실행: `subprocess.run()`

import subprocess

result = subprocess.run(['echo', '안녕하세요'], capture_output=True, text=True)
print(result.stdout)  # 안녕하세요

2. 에러 체크와 반환값 검사

import subprocess

res = subprocess.run(['ls', '없는_폴더'], capture_output=True, text=True)
if res.returncode != 0:
    print("에러 발생:", res.stderr)
else:
    print(res.stdout)

3. 입력 보내기와 stdout 읽기

import subprocess

p = subprocess.run(['grep', 'hello'], input='hello world\nhi python', capture_output=True, text=True)
print(p.stdout)  # hello world

4. 비동기 실행: `Popen` 사용

import subprocess, time

p = subprocess.Popen(['ping', '-c', '3', 'google.com'], stdout=subprocess.PIPE, text=True)
for line in p.stdout:
    print(line.strip())
p.wait()
print("종료 코드:", p.returncode)

요약

  • subprocess.run()으로 간단히 외부 명령 실행 및 출력 캡처
  • 반환값과 stderr로 에러 확인 가능
  • input 인자로 명령에 값 전달 가능
  • Popen으로 실시간 출력 처리나 비동기 실행 가능

댓글

가장 많이 본 글

Icons by Flaticon