Python 커맨드 라인 인자 받기 — sys.argv & argparse

2026. 6. 23. 19:00·BI&Programming-Tools/Python

스크립트를 실행할 때 터미널에서 직접 값을 넘겨주는 방법입니다.

생물정보학에서는 입력 파일 경로, 파라미터 값 등을 스크립트에 넘길 때 자주 씁니다.

python script.py input.fastq --threshold 30 --output result.txt

sys.argv

기본 개념

sys.argv는 커맨드 라인 인자를 문자열 리스트로 받아옵니다.

  • sys.argv[0] : 스크립트 파일명 자체입니다.
  • sys.argv[1] 부터 : 실제 넘긴 인자입니다.
import sys

print(sys.argv)
python script.py hello 42
# ['script.py', 'hello', '42']


사용 예시

import sys

input_file = sys.argv[1]
output_file = sys.argv[2]

print(f"입력: {input_file}, 출력: {output_file}")
python script.py input.fastq output.txt
# 입력: input.fastq, 출력: output.txt


주의사항

  • 모든 값은 문자열로 들어옵니다. 숫자로 쓰려면 int(), float() 변환이 필요합니다.
  • 인자 개수가 맞지 않으면 IndexError가 납니다.
  • 인자가 많아지면 순서를 외워야 해서 관리가 불편합니다.

인자가 1~2개 정도로 단순할 때만 쓰고, 그 이상이면 argparse를 쓰는 게 낫습니다.



argparse


기본 개념

표준 라이브러리에 포함된 인자 파싱 모듈입니다.

인자에 이름(--option)을 붙여서 순서와 관계없이 넘길 수 있고, 도움말(-h)도 자동으로 생성됩니다.


기본 구조

import argparse

parser = argparse.ArgumentParser(description="스크립트 설명")

# 인자 추가
parser.add_argument("input", help="입력 파일 경로")                  # 위치 인자 (필수)
parser.add_argument("--output", "-o", help="출력 파일 경로")         # 옵션 인자
parser.add_argument("--threshold", type=int, default=20, help="품질 임계값")

args = parser.parse_args()

print(args.input)
print(args.output)
print(args.threshold)
python script.py input.fastq --output result.txt --threshold 30


위치 인자 vs 옵션 인자

구분 작성 방법 특징
위치 인자 add_argument("input") 순서대로 입력, 필수값입니다.
옵션 인자 add_argument("--output") --이름 으로 명시, 선택값입니다.


자주 쓰는 add_argument 옵션

parser.add_argument(
    "--threshold",
    type=int,          # 자동으로 int 변환
    default=20,        # 값을 안 넘기면 기본값 사용
    required=True,     # 필수 옵션 인자로 만들기
    help="품질 임계값" # -h 출력 시 표시되는 설명
)

# 플래그 (True/False 스위치)
parser.add_argument("--verbose", action="store_true", help="상세 출력 활성화")

# 여러 값 받기
parser.add_argument("--samples", nargs="+", help="샘플 파일 목록")
python script.py --verbose
# args.verbose → True

python script.py --samples a.fastq b.fastq c.fastq
# args.samples → ['a.fastq', 'b.fastq', 'c.fastq']


축약 옵션 (-o / --output)

parser.add_argument("--output", "-o", help="출력 파일")
python script.py --output result.txt
python script.py -o result.txt  # 동일


자동 생성 도움말

python script.py -h
# usage: script.py [-h] [--output OUTPUT] [--threshold THRESHOLD] input
# ...

 

별도로 작성하지 않아도 -h / --help로 사용법이 출력됩니다.


sys.argv vs argparse 비교

  sys.argv argparse
사용 난이도 간단 약간 더 많은 코드
인자 개수 적을 때 적합 많아져도 관리 편함
타입 변환 수동 type= 으로 자동
도움말 없음 -h 자동 생성
기본값 수동 처리 default= 지원

재사용할 스크립트나 인자가 3개 이상이면 처음부터 argparse로 짜는 게 낫다.

'BI&Programming-Tools > Python' 카테고리의 다른 글

[Python TDD] unittest  (0) 2026.06.24
TDD 개념 — Test Driven Development  (0) 2026.06.24
[파이썬 기초] 차원 축소 (PCA, UMAP)  (0) 2026.06.21
[파이썬 기초] 데이터 전처리 심화 (결측값, 이상값, 정규화, 인코딩)  (0) 2026.06.20
[파이썬 기초] scikit-learn 기초 (분류, 회귀, 클러스터링)  (0) 2026.06.20
'BI&Programming-Tools/Python' 카테고리의 다른 글
  • [Python TDD] unittest
  • TDD 개념 — Test Driven Development
  • [파이썬 기초] 차원 축소 (PCA, UMAP)
  • [파이썬 기초] 데이터 전처리 심화 (결측값, 이상값, 정규화, 인코딩)
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    리눅스기초
    fasta
    R기초
    bioinformatics
    코딩테스트
    GATK
    파일포맷
    FASTQ
    파이썬연습
    R
    분자생물학
    통계
    ngs
    파이썬기초
    wgs
    생물정보학
    유전체분석
    리눅스
    데이터분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
Python 커맨드 라인 인자 받기 — sys.argv & argparse
상단으로

티스토리툴바