Как читать / обрабатывать аргументы командной строки? - PullRequest

Ответы [ 17 ]

7 голосов
/ 23 августа 2011

Как вы можете видеть optparse"Модуль optparse устарел и не будет дальше разрабатываться; разработка продолжится с модулем argparse ."

7 голосов
/ 12 августа 2014

Pocoo's click более интуитивно понятен, требует меньшего количества шаблонов и, по крайней мере, такой же мощный, как argparse.

Единственный недостаток, с которым я сталкивался до сих пор, это то, что вы не можете много настраивать, чтобы помочь страницам, но обычно это не является обязательным требованием, и docopt кажется очевидным выбором, когда это так.

4 голосов
/ 06 февраля 2011

Вас может заинтересовать небольшой модуль Python, который я написал, чтобы сделать обработку аргументов командной строки еще проще (с открытым исходным кодом и бесплатное использование) - Commando

4 голосов
/ 18 августа 2013

Я рекомендую посмотреть на docopt как на простую альтернативу этим другим.

docopt - это новый проект, который работает, анализируя ваше сообщение об использовании --help, а не требует, чтобы вы реализовали все самостоятельно. Вам просто нужно поместить сообщение об использовании в формате POSIX.

3 голосов
/ 07 октября 2017
import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

Assuming the Python code above is saved into a file called prog.py
$ python prog.py -h

Ref-link: https://docs.python.org/3.3/library/argparse.html
3 голосов
/ 12 ноября 2015

Еще один вариант - argh . Он основан на argparse и позволяет писать такие вещи, как:

import argh

# declaring:

def echo(text):
    "Returns given word as is."
    return text

def greet(name, greeting='Hello'):
    "Greets the user with given name. The greeting is customizable."
    return greeting + ', ' + name

# assembling:

parser = argh.ArghParser()
parser.add_commands([echo, greet])

# dispatching:

if __name__ == '__main__':
    parser.dispatch()

Он автоматически сгенерирует справку и т. Д., И вы можете использовать декораторы для предоставления дополнительных указаний о том, как должен работать анализ arg.

0 голосов
/ 24 октября 2011

Мое решение - entrypoint2 . Пример:

from entrypoint2 import entrypoint
@entrypoint
def add(file, quiet=True): 
    ''' This function writes report.

    :param file: write report to FILE
    :param quiet: don't print status messages to stdout
    '''
    print file,quiet

текст справки:

usage: report.py [-h] [-q] [--debug] file

This function writes report.

positional arguments:
  file         write report to FILE

optional arguments:
  -h, --help   show this help message and exit
  -q, --quiet  don't print status messages to stdout
  --debug      set logging level to DEBUG
...