Я работаю над заменой некоторых строк, и в настоящее время аргументы передаются в мой скрипт с помощью sys.argv[i]
. Я хотел бы заменить sys на docopt, но до сих пор я нашел документацию относительно неясной.
В настоящее время работает мой код
filename.py -param_to_replace new_param_value
(Я также могу включить несколько параметров для замены)
Затем это обрабатывается
if len(sys.argv) > 1:
for i in range((len(sys.argv)-1) / 2):
params[sys.argv[1+2*i].split('-')[1]] = float(sys.argv[1+2*i+1])
где params — это имя набора определенных параметров.
Я думаю, что должен заставить это работать с docopt, но пока то, что у меня есть, больше похоже на
"""Docopt test
Usage:
filename.py --param_name1 <val> --param_name2 <val>
filename -h | --help
filename --version
Options:
-h --help Show this screen.
--param_name1 Change some param we call param_name1, all other params changed in similar way
"""
from docopt import docopt
if __name__ == '__main__':
arguments = docopt(__doc__, version='filename 1.0')
print(arguments)
Но это ничего не передает и, похоже, это конец деталей, представленных в официальной документации. Кто-нибудь, кто больше знаком с docopt, знает, как более эффективно передавать аргументы командной строки? Или после этого мне следует заменить sys.argv на «аргументы»?
Спасибо!
argparse
версией? - person jonrsharpe   schedule 23.01.2016__doc__
?docopt
, как и другие парсеры аргументов, использует списокsys.argv
(обычно за кулисами). Ваш исходный код анализирует этот список напрямую. Что показываетarguments
? - person hpaulj   schedule 23.01.2016arguments
, который вы пытаетесь создать). С такой строкой документации он ожидает, что первые опции будут даны с именемparam_name1
(предполагается, что только ‹val› является переменной), то же самое дляparam_name2
. Вы должны придерживаться прямого анализа списка (и вы все равно можете написать хорошую строку документации!) - person mgc   schedule 23.01.2016docopt
. - person hpaulj   schedule 23.01.2016argparse
, а оdocopt
знаю только потому, что некоторые плакаты думают, что так легче понять. - person hpaulj   schedule 23.01.2016