스크립트를 실행할 때 터미널에서 직접 값을 넘겨주는 방법입니다.
생물정보학에서는 입력 파일 경로, 파라미터 값 등을 스크립트에 넘길 때 자주 씁니다.
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 |
