Более простой способ написания консольных программ на Python (существуют ли аргументы) - PullRequest
1 голос
/ 17 февраля 2011

Итак, у меня есть код, в котором их слишком много

try:
    if argv[4]:
        n = argv[4]
except IndexError, e:
    n = raw_input("Enter n: ")

Есть ли какой-нибудь более простой способ сделать это?

По сути, лучший способ проверить наличие входных данных, а затем, если они не действуют соответствующим образом.

Спасибо

Ответы [ 5 ]

3 голосов
/ 17 февраля 2011

Посмотрите на модуль argparse (который делает лот больше, чем показано здесь):

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)
1 голос
/ 17 февраля 2011

Я использую библиотеку plac - это самый простой способ для меня. Вам просто нужно определить функцию с некоторыми аргументами:

import plac

def main(arg1, arg2, arg3=None, arg4='default value'):
    print locals()

if __name__ == '__main__':
    plac.call(main)

И когда вы называете свой сценарий так:

$ python my_console_program.py 111 222

вы получаете аргументы командной строки в качестве аргументов функции:

{'arg1': '111', 'arg2': '222', 'arg3': None, 'arg4': 'default value'}

Вы можете легко обрабатывать стандартные и требуемые аргументы, опции и т. Д.

1 голос
/ 17 февраля 2011

Вы можете использовать len() для получения длины последовательности, такой как sys.argv.

0 голосов
/ 17 февраля 2011

В зависимости от сложности аргументов командной строки и используемой версии Python, вы можете попробовать модуль argparse (доступен в Python 2.7).

Описание в Python Docs:

Модуль argparse позволяет легко создавать удобные интерфейсы командной строки. Программа определяет, какие аргументы она требует, и argparse выяснит, как ее проанализировать из sys.argv. Модуль argparse также автоматически генерирует сообщения помощи и использования и выдает ошибки, когда пользователи дают программе недопустимые аргументы.

0 голосов
/ 17 февраля 2011

Вы можете определить функцию-оболочку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...