명령줄에서 Python 프로그램 실행 방법

PythonBeginner
지금 연습하기

소개

이 랩에서는 명령줄에서 Python 프로그램을 실행하는 기본적인 기술을 배우게 됩니다. 이 방법은 자동화, 스크립팅 및 애플리케이션 배포에 필수적입니다. 명령줄 인터페이스 내에서 Python 스크립트를 생성하고, 실행하고, 인수를 전달하는 과정을 안내해 드리겠습니다.

간단한 Python 스크립트 생성 및 실행

Python 프로그램을 실행하는 가장 일반적인 방법은 .py 확장자를 가진 파일에 코드를 작성한 다음, 터미널에서 Python 인터프리터를 사용하여 해당 파일을 실행하는 것입니다. 고전적인 "Hello, World!" 프로그램을 만들어 보겠습니다.

먼저 새 파일을 만들어야 합니다. WebIDE 의 왼쪽 파일 탐색기에서 project 디렉토리의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 "새 파일 (New File)"을 선택합니다. 파일 이름을 hello.py로 지정합니다.

다음으로 hello.py 파일을 열고 다음 Python 코드를 추가합니다. 이 코드는 내장된 print() 함수를 사용하여 콘솔에 메시지를 표시합니다.

print("Hello, LabEx!")

스크립트를 생성했으므로 이제 실행할 수 있습니다. WebIDE 의 통합 터미널을 엽니다 (이미 열려 있지 않다면 Terminal > New Terminal 메뉴를 사용할 수 있습니다). 터미널은 파일을 저장한 /home/labex/project 디렉토리에서 열려야 합니다.

스크립트를 실행하려면 python 명령 다음에 파일 이름을 입력합니다.

python hello.py

Enter 키를 누르면 스크립트의 출력이 터미널에 직접 표시됩니다.

Hello, LabEx!

명령줄에서 첫 번째 Python 스크립트를 성공적으로 생성하고 실행했습니다.

명령줄 인수 사용하기

스크립트를 실행할 때 런타임에 정보를 전달할 수 있다면 명령줄에서 스크립트를 실행하는 것이 더욱 강력해집니다. 이러한 정보 조각을 명령줄 인수 (command-line arguments) 라고 합니다. Python 의 sys 모듈은 이러한 인수에 접근하는 간단한 방법을 제공합니다.

이름을 명령줄 인수로 전달하여 사용자에게 인사하는 새로운 스크립트를 만들어 보겠습니다.

/home/labex/project 디렉토리에 greet.py라는 새 파일을 만듭니다.

greet.py에 다음 코드를 추가합니다. 이 스크립트는 sys 모듈을 가져옵니다. 명령줄 인수는 sys.argv 리스트에 저장됩니다. sys.argv[0]은 항상 스크립트 자체의 이름이며, 후속 인수는 sys.argv[1]부터 시작합니다.

import sys

## 첫 번째 명령줄 인수에서 이름 가져오기
name = sys.argv[1]

print(f"Hello, {name}!")

이제 터미널에서 이 스크립트를 실행하되, 이번에는 스크립트 파일 이름 뒤에 이름을 추가합니다. 예를 들어 "World"를 사용해 보겠습니다.

python greet.py World

스크립트는 "World"를 인수로 받아 출력에 사용합니다.

Hello, World!

자신의 이름을 사용하여 실행해 보면 출력이 어떻게 변경되는지 확인할 수 있습니다.

python greet.py LabEx
Hello, LabEx!

이 기법을 사용하면 스크립트를 유연하고 재사용 가능하게 만들어 다양한 입력에 사용할 수 있습니다.

스크립트의 견고성 향상

이전 단계에서 greet.py 스크립트를 이름 없이 실행하면 어떻게 될까요? 시도해 봅시다.

python greet.py

오류가 발생합니다.

Traceback (most recent call last):
  File "/home/labex/project/greet.py", line 4, in <module>
    name = sys.argv[1]
IndexError: list index out of range

IndexError는 스크립트가 sys.argv[1]에 접근하려고 하지만, 인수가 제공되지 않았기 때문에 해당 인덱스가 존재하지 않아 발생합니다. 견고한 스크립트는 이러한 경우를 우아하게 처리해야 합니다.

인수가 제공되었는지 확인하도록 greet.py를 수정해 보겠습니다. 제공되지 않은 경우 기본 이름을 사용합니다. len() 함수를 사용하여 sys.argv 리스트의 항목 수를 확인할 수 있습니다. len(sys.argv)가 1 보다 크면 하나 이상의 인수가 제공되었음을 의미합니다.

greet.py 파일을 다음 코드로 업데이트합니다.

import sys

if len(sys.argv) > 1:
    ## 인수가 존재하면 제공된 인수 사용
    name = sys.argv[1]
else:
    ## 인수가 제공되지 않으면 기본 이름 사용
    name = "World"

print(f"Hello, {name}!")

이제 스크립트가 더 견고해졌습니다. 인수를 제공하지 않고 다시 실행해 보세요.

python greet.py

이번에는 오류 없이 실행되고 기본 이름을 사용합니다.

Hello, World!

인수를 제공할 때도 여전히 올바르게 작동합니다.

python greet.py LabEx
Hello, LabEx!

잠재적인 오류를 처리하고 기본 동작을 제공하는 것은 안정적인 명령줄 애플리케이션을 작성하는 핵심 실천 사항입니다.

요약

이 실습에서는 명령줄에서 Python 프로그램을 실행하는 데 필수적인 기술을 배웠습니다. 간단한 스크립트를 만들고 실행하는 것부터 시작했습니다. 그런 다음 sys 모듈을 통해 명령줄 인수를 사용하여 스크립트를 더 동적이고 상호 작용적으로 만들었습니다. 마지막으로 인수가 누락된 경우를 처리하여 스크립트를 더 견고하게 만드는 방법을 배웠습니다. 이러한 기술은 명령줄 도구를 구축하거나 작업을 자동화하려는 모든 Python 개발자에게 기본적인 기술입니다.