Как создать параметры запуска программы в python - PullRequest
0 голосов
/ 14 ноября 2009

Я только начинаю изучать python, и программе, которую я пишу, требуются параметры, чтобы он мог выполнять определенную задачу. Например (программа называется Samtho)

samtho -i Mozilla_Firefox

Как я могу это сделать?

Ответы [ 5 ]

9 голосов
/ 14 ноября 2009

Прочтите документацию по optparse . Это очень мощный инструмент, который позволит вам получить множество параметров и создать текст справки.

6 голосов
/ 14 ноября 2009

Вы можете использовать модули optparse и getopt из стандартной библиотеки. Первый более гибкий и поэтому рекомендуется.

Если вы хотите написать собственный анализатор, вам придется проверить содержимое sys.argv. sys.argv[0] содержит название выполняемой программы. sys.argv[1:] - список, содержащий все аргументы, переданные программе.

Это минимальный пример использования optparse (я имитировал выполнение программы, вручную установив sys.argv):

>>> import sys
>>> sys.argv = 'samtho -i Mozilla_Firefox'.split()
>>>
>>> from optparse import OptionParser
>>> parser = OptionParser()
>>> parser.add_option("-i")
<Option at 0xb7881b4c: -i>
>>> options, args = parser.parse_args()
>>> options
<Values at 0xb788958c: {'i': 'Mozilla_Firefox'}>
>>> options.i
'Mozilla_Firefox'
2 голосов
/ 14 ноября 2009

Используйте sys.argv для непосредственного получения входных аргументов (сначала import sys). Существует множество различных библиотек (популярными являются встроенные модули optparse и getopt), которые помогают анализировать аргументы, но выполнение необработанного сопоставления может быть проще в зависимости от сложности, которая вам нужна.

1 голос
/ 14 ноября 2009

Если вы не возражаете против использования стандартной библиотеки, argparse обычно считается лучшим в своем классе для анализа параметров.

0 голосов
/ 14 ноября 2009

Я считаю optfunc самой простой библиотекой для использования.

import optfunc, sys

def samtho(i=''):
    "Usage: %prog -i <option>"
    print i

if __name__ == '__main__':
    optfunc.run(samtho)
...