Python은 특히 명령줄 인터페이스(CLI) 애플리케이션을 구축할 때 다양성과 사용 편의성으로 널리 알려져 있습니다. 일상적인 작업을 자동화하거나, 개발자 도구를 구축하거나, 유연한 스크립트를 생성하려는 경우 Python의 풍부한 생태계는 CLI를 효율적으로 처리할 수 있는 다양한 라이브러리를 제공합니다.
이 블로그 게시물에서는 다음 내용을 다루면서 Python에서 CLI를 사용하는 방법을 자세히 살펴보겠습니다.
이 게시물이 끝나면 강력하고 사용자 친화적인 명령줄 애플리케이션을 만들 수 있게 됩니다.
CLI는 다음을 제공하므로 시스템 관리, 데이터 처리 및 소프트웨어 개발에 널리 사용됩니다.
Python은 CLI 도구를 구축하기 위한 여러 라이브러리를 제공합니다:
sys.argv는 명령줄 인수에 액세스하는 기본 방법입니다. 명령줄 인수를 목록으로 저장합니다. 여기서 첫 번째 요소는 항상 스크립트 이름입니다.
import sys # Command-line arguments print(f"Script Name: {sys.argv[0]}") print(f"Arguments: {sys.argv[1:]}")
스크립트 실행:
$ python script.py arg1 arg2 arg3 Script Name: script.py Arguments: ['arg1', 'arg2', 'arg3']
argparse 모듈은 CLI 생성을 위한 Python의 표준 라이브러리입니다. sys.argv보다 더 많은 제어 기능을 제공하며 도움말 메시지와 오류 처리를 자동으로 생성합니다.
import argparse parser = argparse.ArgumentParser(description="A simple CLI tool") parser.add_argument("name", help="Your name") parser.add_argument("--greet", help="Custom greeting", default="Hello") args = parser.parse_args() print(f"{args.greet}, {args.name}!")
스크립트 실행:
$ python script.py Alice Hello, Alice! $ python script.py Alice --greet Hi Hi, Alice!
유형 확인 및 선택의 예:
parser.add_argument("age", type=int, help="Your age") parser.add_argument("--format", choices=["json", "xml"], help="Output format")
스크립트 실행:
$ python script.py Alice 30 --format json
click은 명령줄 인터페이스를 생성하기 위한 고급 라이브러리입니다. 명령, 하위 명령 및 옵션을 정의하는 데코레이터 기반 접근 방식을 제공합니다.
import click @click.command() @click.option('--name', prompt='Your name', help='The person to greet.') @click.option('--greet', default="Hello", help='Greeting to use.') def greet(name, greet): """Simple program that greets NAME with a GREET.""" click.echo(f'{greet}, {name}!') if __name__ == '__main__': greet()
스크립트 실행:
$ python greet.py --name Alice --greet Hi Hi, Alice!
여러 하위 명령을 사용하여 더 복잡한 CLI 도구를 만들 수 있습니다.
import click @click.group() def cli(): pass @cli.command() def start(): click.echo("Starting the application...") @cli.command() def stop(): click.echo("Stopping the application...") if __name__ == '__main__': cli()
스크립트 실행:
$ python app.py start Starting the application... $ python app.py stop Stopping the application...
어떤 라이브러리를 사용하든 원활한 사용자 경험을 제공하려면 오류 처리가 중요합니다.
필수 인수가 누락된 경우 argparse는 오류를 발생시키고 사용법 지침을 표시합니다.
$ python script.py usage: script.py [-h] name script.py: error: the following arguments are required: name
클릭 시 데코레이터를 사용하여 사용자 정의 예외를 발생시키고 오류를 우아하게 처리할 수 있습니다.
@click.command() @click.option('--count', type=int, help='Number of repetitions') def repeat(count): if count is None or countargparse와 click을 다른 라이브러리와 결합
CLI 기능을 확장하려면 argparse를 결합하거나 os, 하위 프로세스 또는 사용자 정의 라이브러리와 같은 다른 라이브러리와 클릭할 수 있습니다.
예: argparse와 os 결합
import os import argparse parser = argparse.ArgumentParser(description="File operations CLI") parser.add_argument("filename", help="Name of the file to check") parser.add_argument("--create", action="store_true", help="Create the file if it does not exist") args = parser.parse_args() if os.path.exists(args.filename): print(f"{args.filename} already exists.") else: if args.create: with open(args.filename, 'w') as f: f.write("New file created.") print(f"{args.filename} created.") else: print(f"{args.filename} does not exist.")스크립트 실행:
$ python filecli.py example.txt --create example.txt created.CLI 도구 패키징
CLI 도구를 배포하려면 setuptools를 사용하여 패키지하고 모든 시스템에서 전역적으로 액세스할 수 있도록 만들 수 있습니다.
1단계: setup.py 파일 생성
from setuptools import setup setup( name='greet-cli', version='0.1', py_modules=['greet'], install_requires=[ 'click', ], entry_points=''' [console_scripts] greet=greet:greet ''', )2단계: 로컬로 CLI 설치
$ pip install --editable .이제 전 세계적으로 Greeting 명령을 사용할 수 있습니다.
$ greet --name Alice Hello, Alice!PyPI에 배포
도구를 공개적으로 배포하려면 PyPI 계정을 만들고 다음 단계에 따라 패키지를 업로드하세요.
- 패키지를 빌드합니다.
python setup.py sdist bdist_wheel
- 패키지 업로드:
twine upload dist/*CLI 구축 모범 사례
- 명확한 도움말 메시지 제공: 항상 사용자를 안내하는 도움말을 포함합니다.
- 입력 유효성 검사: 유형 검사를 사용하고 예외를 적절하게 처리합니다.
- 직관적인 명령 디자인: 명령 구조가 논리적이고 사용하기 쉬운지 확인하세요.
- 특수 사례로 테스트: 유효하지 않은 입력이 있어도 CLI 도구가 올바르게 작동하는지 확인하세요.
- 코드 모듈화: 더 쉽게 테스트하고 유지 관리할 수 있도록 명령줄 로직을 핵심 기능과 분리하세요.
결론
Python은 명령줄 인터페이스(CLI) 애플리케이션을 구축하기 위한 탁월한 도구 키트를 제공합니다. 내장된 argparse 모듈을 사용하든, 기능이 더 풍부한 클릭을 사용하든 워크플로우를 자동화하고 데이터를 처리하며 생산성을 향상시킬 수 있는 강력하고 사용자 친화적인 도구를 만들 수 있습니다.
Python에서 CLI 작업의 기본 및 고급 기능을 배웠으므로 이제 이를 실제로 적용해 볼 차례입니다. 나만의 도구를 만들고 공유하거나 전 세계에 배포하세요!
질문이나 제안 사항이 있으면 언제든지 문의하세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3