점프 투 파이썬 DAY11(프로그램의 입출력)

정지범·2026년 9월 20일

점프 투 파이썬

목록 보기
17/37

04-4 프로그램의 입출력

지금까지는 input()을 사용해 프로그램 실행 중에 사용자에게 값을 입력받았다.
이번에는 프로그램을 실행할 때 명령 프롬프트에서 값을 함께 전달하는 방법을 알아본다.

일반적인 명령어는 다음과 같은 형태로 실행된다.

명령어 [인수1 인수2 ...]

예를 들어 Windows 명령 프롬프트에서

type a.txt

라고 입력하면 type 명령어에 a.txt라는 인수를 전달하는 것이다.

type     a.txt
 ↓        ↓
명령어    인수

파이썬 프로그램도 이와 비슷하게 실행할 수 있다.

python 프로그램.py 인수1 인수2 인수3

📌 목차

  • 1. 프로그램에 인수 전달하기

  • 2. sys 모듈 사용하기

    • 2-1. import sys
    • 2-2. sys.argv
    • 2-3. sys.argv[1:]의 의미
  • 3. 명령행 인수 출력하기

  • 4. 전달받은 문자열을 대문자로 변경하기

  • 5. input()과 sys.argv 비교

  • 6. 핵심 정리


1. 프로그램에 인수 전달하기

명령 프롬프트에서는 프로그램이나 명령어 뒤에 값을 붙여 실행하는 경우가 많다.

예를 들어

python test.py hello

라고 실행했다면

python → 파이썬 실행

test.py → 실행할 파이썬 파일

hello → 프로그램에 전달할 인수

라고 볼 수 있다.

여러 개의 인수를 전달할 수도 있다.

python test.py aaa bbb ccc

이 경우 프로그램에는

aaa
bbb
ccc

라는 세 개의 값이 전달된다.


2. sys 모듈 사용하기

파이썬에서는 프로그램을 실행할 때 전달되는 인수를 확인하기 위해

sys

모듈을 사용할 수 있다.

sys 모듈을 사용하려면 먼저 다음과 같이 작성한다.

import sys

2-1. import sys

기본 구조는 다음과 같다.

import sys

import는 다른 모듈의 기능을 현재 프로그램에서 사용하기 위해 불러오는 명령이다.

import sys
   ↓
sys 모듈 불러오기

sys에는 파이썬 실행 환경과 관련된 여러 기능이 들어 있으며, 이번에는 그중

sys.argv

를 사용한다.


2-2. sys.argv

sys.argv는 프로그램을 실행할 때 전달된 값들을 저장하고 있는 리스트이다.

예를 들어 test.py라는 파일에 다음 코드를 작성했다고 하자.

import sys

print(sys.argv)

그리고 명령 프롬프트에서

python test.py aaa bbb ccc

라고 실행한다.

그러면 sys.argv는 개념적으로 다음과 같다.

[
    "test.py",
    "aaa",
    "bbb",
    "ccc"
]

즉,

인덱스값
sys.argv[0]실행한 파일 이름
sys.argv[1]첫 번째 인수
sys.argv[2]두 번째 인수
sys.argv[3]세 번째 인수

⭐ 가장 중요한 점

sys.argv[0]

에는 사용자가 전달한 첫 번째 값이 아니라 실행한 파이썬 파일 이름이 들어간다.

예를 들어

python sys1.py aaa bbb ccc

라면

sys.argv[0] → sys1.py
sys.argv[1] → aaa
sys.argv[2] → bbb
sys.argv[3] → ccc

이다.

그림으로 보면

python sys1.py aaa bbb ccc
          ↓     ↓   ↓   ↓
argv[0] ──┘     │   │   │
argv[1] ────────┘   │   │
argv[2] ────────────┘   │
argv[3] ────────────────┘

2-3. sys.argv[1:]의 의미

원문의 예제에서는 다음과 같이 작성한다.

args = sys.argv[1:]

왜 [1:]을 사용하는지 이해하는 것이 중요하다.

앞에서 살펴본 것처럼

sys.argv[0]

에는 프로그램 파일 이름이 들어간다.

예를 들어

sys.argv

가

["sys1.py", "aaa", "bbb", "ccc"]

라면

sys.argv[1:]

은 리스트 슬라이싱에 의해

["aaa", "bbb", "ccc"]

가 된다.

즉,

sys.argv

["sys1.py", "aaa", "bbb", "ccc"]
     ↑
   제외

         ↓

sys.argv[1:]

["aaa", "bbb", "ccc"]

이다.

따라서

args = sys.argv[1:]

라고 작성하면 실제 사용자가 전달한 인수만 args에 저장할 수 있다.


3. 명령행 인수 출력하기

다음 프로그램을 살펴보자.

# sys1.py

import sys

args = sys.argv[1:]

for i in args:
    print(i)

코드를 하나씩 살펴보면

import sys

sys 모듈을 불러온다.


args = sys.argv[1:]

프로그램 파일 이름을 제외하고 사용자가 전달한 인수만 가져온다.


for i in args:
    print(i)

args 리스트의 값을 하나씩 꺼내 출력한다.


실행해 보기

Windows 명령 프롬프트에서 sys1.py가 저장된 폴더로 이동한다.

예를 들어

C:\doit

폴더에 저장했다면

cd C:\doit

로 이동한다.

그리고 다음과 같이 실행한다.

python sys1.py aaa bbb ccc

결과

aaa
bbb
ccc

이다.


⭐ 실행 과정 이해하기

먼저 사용자가

python sys1.py aaa bbb ccc

라고 입력한다.

그러면

sys.argv

는

["sys1.py", "aaa", "bbb", "ccc"]

가 된다.

그리고

args = sys.argv[1:]

에 의해

args = ["aaa", "bbb", "ccc"]

가 된다.

이후

for i in args:

가 실행된다.

첫 번째 반복

i = "aaa"

출력

aaa

두 번째 반복

i = "bbb"

출력

bbb

세 번째 반복

i = "ccc"

출력

ccc

따라서 최종 결과는

aaa
bbb
ccc

이다.


4. 전달받은 문자열을 대문자로 변경하기

이번에는 전달받은 모든 인수를 대문자로 변경하여 출력해 보자.

# sys2.py

import sys

args = sys.argv[1:]

for i in args:
    print(i.upper(), end=" ")

앞부분은 기존 코드와 동일하다.

import sys

args = sys.argv[1:]

사용자가 전달한 인수를 가져온다.


upper()

새롭게 등장한 부분은

i.upper()

이다.

upper()는 문자열을 모두 대문자로 변경한다.

예를 들어

"python".upper()

결과

PYTHON

이다.


end=" "

또한

print(i.upper(), end=" ")

에서

end=" "

를 사용하고 있다.

기본 print()는 출력 후 줄을 바꾼다.

print("A")
print("B")

결과

A
B

하지만

print("A", end=" ")
print("B", end=" ")

라고 작성하면

A B

처럼 한 줄로 출력된다.

따라서 이번 코드에서

print(i.upper(), end=" ")

는

문자열을 대문자로 바꾼 뒤 공백을 붙여 한 줄에 계속 출력한다.

라는 의미이다.


실행해 보기

다음과 같이 실행한다고 해보자.

python sys2.py life is too short, you need python

sys.argv에는 다음과 같은 값들이 들어간다.

[
    "sys2.py",
    "life",
    "is",
    "too",
    "short,",
    "you",
    "need",
    "python"
]

sys.argv[1:]을 사용하면

[
    "life",
    "is",
    "too",
    "short,",
    "you",
    "need",
    "python"
]

만 가져온다.

각 문자열에

upper()

를 적용하면

life   → LIFE
is     → IS
too    → TOO
short, → SHORT,
you    → YOU
need   → NEED
python → PYTHON

이 된다.

따라서 최종 결과는

LIFE IS TOO SHORT, YOU NEED PYTHON

이다.


⭐ sys2.py 전체 실행 흐름

python sys2.py life is too short, you need python
                     ↓
                 sys.argv
                     ↓

["sys2.py", "life", "is", "too",
 "short,", "you", "need", "python"]

                     ↓

               sys.argv[1:]

                     ↓

["life", "is", "too",
 "short,", "you", "need", "python"]

                     ↓

                  for 문

                     ↓

                  upper()

                     ↓

LIFE IS TOO SHORT, YOU NEED PYTHON

5. input()과 sys.argv 비교

앞에서 배운

input()

과 이번에 배운

sys.argv

는 둘 다 프로그램에 값을 전달할 수 있지만 사용 시점이 다르다.


input()

name = input("이름을 입력하세요: ")

프로그램을 먼저 실행한 뒤 사용자에게 값을 입력받는다.

프로그램 실행
     ↓
입력 요청
     ↓
사용자가 입력
     ↓
프로그램 처리

예를 들어

python test.py

이름을 입력하세요: pingu

와 같은 방식이다.


sys.argv

sys.argv는 프로그램을 실행하는 순간 값을 함께 전달한다.

python test.py pingu

흐름은

프로그램 실행 + 값 전달
          ↓
     프로그램 처리

이다.


⭐ input()과 sys.argv 차이

구분input()sys.argv
입력 시점프로그램 실행 중프로그램 실행 시
입력 위치프로그램 내부 입력창명령 프롬프트
사용 방법input()sys.argv
여러 값 처리직접 입력받아야 함명령 뒤에 여러 인수 전달 가능
대표 용도사용자와 상호작용명령행 프로그램

예를 들어

input()

name = input("이름: ")

실행

python test.py
이름: pingu

sys.argv

import sys

name = sys.argv[1]

실행

python test.py pingu

6. 핵심 정리

📌 sys 모듈

import sys

프로그램 실행 환경과 관련된 기능을 사용하기 위한 모듈이다.

이번 장에서는

sys.argv

를 사용한다.


📌 sys.argv

프로그램 실행 시 전달된 인수들이 들어 있는 리스트이다.

python test.py A B C

이라면 개념적으로

sys.argv

는

["test.py", "A", "B", "C"]

이다.


⭐ 가장 중요한 내용 1 - argv[0]

sys.argv[0]

은 첫 번째 사용자 입력값이 아니다.

실행 중인 프로그램의 파일 이름이다.

python test.py aaa bbb
          ↓    ↓   ↓
       argv[0] │   │
       argv[1] ┘   │
       argv[2] ────┘

⭐ 가장 중요한 내용 2 - argv[1:]

실제 사용자가 입력한 인수만 얻고 싶다면

sys.argv[1:]

을 사용한다.

sys.argv
["test.py", "aaa", "bbb", "ccc"]

에서

sys.argv[1:]

을 사용하면

["aaa", "bbb", "ccc"]

가 된다.

즉,

[0] → 프로그램 파일명

[1:] → 사용자가 전달한 인수

라고 기억하면 쉽다.


⭐ 가장 중요한 내용 3 - 명령행 인수도 문자열

sys.argv에 저장되는 값은 문자열이다.

예를 들어

python test.py 10 20

이라고 입력하더라도

sys.argv[1]

은 숫자 10이 아니라

"10"

이다.

따라서 숫자 계산을 하려면 형 변환해야 한다.

import sys

a = int(sys.argv[1])
b = int(sys.argv[2])

print(a + b)

실행

python test.py 10 20

결과

30

즉,

sys.argv[1]
     ↓
   "10"
   문자열
     ↓
   int()
     ↓
    10
   정수

이다.


⭐ sys.argv 전체 정리

python calc.py 10 20

실행 시

sys.argv

는

["calc.py", "10", "20"]

이다.

따라서

sys.argv[0] → "calc.py"

sys.argv[1] → "10"

sys.argv[2] → "20"

이다.

그리고

sys.argv[1:]

은

["10", "20"]

가 된다.

💡 04-4에서는 sys.argv가 명령줄에서 전달받은 값을 저장하는 리스트라는 점과 argv[0]에는 프로그램 파일 이름, argv[1:]에는 실제 전달한 인수들이 들어간다는 점을 확실하게 기억해 두자.

profile
성실하자:)

0개의 댓글