Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 명령줄 인터페이스 프로그래밍?

<시간/>

이 섹션에서는 파이썬을 사용하여 명령줄 인터페이스를 개발할 것입니다. 그러나 프로그램에 대해 자세히 알아보기 전에 먼저 명령줄에 대해 알아보겠습니다.

명령줄은 컴퓨터 프로그램의 존재부터 사용되며 명령을 기반으로 합니다. 명령줄 프로그램은 셸이나 명령줄에서 실행되는 프로그램입니다.

명령줄 인터페이스는 마우스를 사용하는 대신 터미널, 셸 또는 콘솔에 명령을 입력하여 탐색하는 사용자 인터페이스를 제공합니다.

명령줄 인터페이스(CLI)는 실행 파일로 시작합니다. 다음과 같이 개발 방식에 따라 스크립트에 전달할 수 있는 매개변수가 있습니다.

  • 인수 :스크립트에 전달되는 이 매개변수를 제공해야 합니다. 제공하지 않으면 CLI에서 오류가 발생합니다. 예를 들어, numpy는 pip installnumpy 명령의 인수입니다.

  • 옵션 :pip install django –cache-dir ./my-cache-dir 여기서 –cache_dir은 옵션 매개변수이고 값 ./my-cache-dir은 다음과 같이 사용해야 합니다. 캐시 디렉토리.

  • 플래그 :스크립트에 특정 동작(예:–help 매개변수)을 활성화 또는 비활성화하도록 지시하는 또 다른 선택적 매개변수입니다.

파이썬은 '클릭'과 같은 명령줄 인터페이스를 작성하기 위해 여러 파이썬 패키지를 제공합니다. Click을 사용하면 몇 줄의 코드로 명령줄 인터페이스를 구축할 수 있습니다.

다음은 클릭 패키지를 사용하지 않는 명령줄 인터페이스 프로그램입니다. CLI 프로그램을 작성하는 것은 'click' 패키지를 사용하여 얻은 것만큼 우아하지 않을 수 있습니다. 'click'을 사용하면 "Don't Repeat Yourself"(DRY) 원칙을 따를 수 있기 때문입니다.

클릭 패키지를 사용하지 않는 명령줄 인터페이스

import sys
import random

def do_work():
   """ Function to handle command line usage"""
   args = sys.argv
   args = args[1:] # First element of args is the file name

   if len(args) == 0:
      print('You have not passed any commands in!')
   else:
      for a in args:
         if a == '--help':
            print('Basic command line program')
            print('Options:')
            print(' --help -> show this basic help menu.')
            print(' --monty -> show a Monty Python quote.')
            print(' --veg -> show a random vegetable')
         elif a == '--monty':
            print('He’s not the Messiah—he’s a very naughty boy')
         elif a == '--veg':
            print(random.choice(['Tomato','Reddis','Carrot', 'Potato', 'Turnip']))
         else:
            print('Unrecognised argument.')

if __name__ == '__main__':
do_work()

출력

c:\Python\Python361>python cli_interp1.py --monty
He’s not the Messiah—he’s a very naughty boy

c:\Python\Python361>python cli_interp1.py --help
Basic command line program
Options:
--help -> show this basic help menu.
--monty -> show a Monty Python quote.
--veg -> show a random vegetable

c:\Python\Python361>python cli_interp1.py --veg
Tomato

c:\Python\Python361>python cli_interp1.py --error
Unrecognised argument.

위 프로그램에서 볼 수 있듯이 인수 이름을 변경하는 것은 그다지 융통성이 없습니다.

아래는 python click 패키지를 사용하여 CLI를 구현하는 동일한 프로그램입니다.

import click
import random

@click.command()
@click.option('--monty', default=False, help='Show a Monty Python quote.')
@click.option('--veg', default=False, help='Show a random vegetable.')
def do_work(monty, veg):
""" Basic Click example will follow your commands"""
if monty:
   print('He’s not the Messiah—he’s a very naughty boy')
   if veg:
      print(random.choice(['Tomato','Reddis','Carrot', 'Potato', 'Turnip']))
if __name__ == '__main__':
do_work()

출력

c:\Python\Python361>python cli_interp2.py --help
Usage: cli_interp2.py [OPTIONS]

Basic Click example will follow your commands

Options:
--monty TEXT Show a Monty Python quote.
--veg TEXT Show a random vegetable.
--help Show this message and exit.

위의 프로그램은 '클릭' 패키지를 사용하여 CLI를 작성하는 것이 훨씬 쉽고 많은 프로그래머의 노력을 절약할 수 있음을 보여줍니다.