Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: cinnamon 30. 09. 2018, 10:05:11
-
Nemá někdo zkušenosti s knihovnout argparse? Potřeboval bych procházet všechny parametry (a jejich hodnoty) předané při volání skriptu, aniž by se musely před parsováním definovat pomocí add_argument.
-
nargs=argparse.REMAINDER by mohlo pomoci, viz https://docs.python.org/3/library/argparse.html#nargs (https://docs.python.org/3/library/argparse.html#nargs)
python -c 'import argparse; parser = argparse.ArgumentParser(); parser.add_argument(\'args\', nargs=argparse.REMAINDER); print(parser.parse_args())' 1 -help 1 --as 3
Namespace(args=['1', '-help', '1', '--as', '3'])
-
nargs=argparse.REMAINDER by mohlo pomoci, viz https://docs.python.org/3/library/argparse.html#nargs (https://docs.python.org/3/library/argparse.html#nargs)
python -c 'import argparse; parser = argparse.ArgumentParser(); parser.add_argument(\'args\', nargs=argparse.REMAINDER); print(parser.parse_args())' 1 -help 1 --as 3
Namespace(args=['1', '-help', '1', '--as', '3'])
Jak jsi to napsal, tak to samozřejmě funguje, ale když zadám parametr ve tvaru
--test-directory=$HOME/testtak parsování skončí chybou unrecognized arguments
-
Tak nakonec jsem naznal, že pro moje účely je argparse kanónem na vrabce, sprostě projdu sys.argv[1:] a položky rozparsuju pomocí item.partition('=').
-
Případně co modul getopt https://docs.python.org/3.7/library/getopt.html ?
-
A co zkusit @click? Asi to úplně neodpovídá na dotaz... ale co kkdyby náhodou.
Video z LinuxDays o @click https://www.youtube.com/watch?v=kRY2UGhjRb0
-
Chci pouzit argparse, ale nechce se mi ho konfigurovat. Asi tak nejak zni dotaz.
-
Chci pouzit argparse, ale nechce se mi ho konfigurovat. Asi tak nejak zni dotaz.
Spis mi prijde, ze ho chce pouzit zpusobem, jakym nebyl zamyslen pouzivat (tj. a la **kwArgs).
-
Chci pouzit argparse, ale nechce se mi ho konfigurovat. Asi tak nejak zni dotaz.
Spis mi prijde, ze ho chce pouzit zpusobem, jakym nebyl zamyslen pouzivat (tj. a la **kwArgs).
Přesně tak, argparse dělá trochu něco jiného, než jsem potřeboval.
-
Chci pouzit argparse, ale nechce se mi ho konfigurovat. Asi tak nejak zni dotaz.
Spis mi prijde, ze ho chce pouzit zpusobem, jakym nebyl zamyslen pouzivat (tj. a la **kwArgs).
Přesně tak, argparse dělá trochu něco jiného, než jsem potřeboval.
Pak bych neztracel cas argparse, sel by pouzit click nebo si to proste oprogramovat
-
Pak bych neztracel cas argparse, sel by pouzit click nebo si to proste oprogramovat
click vznikl před argparse, v pythonu 3 ho není důvod ho používat.
-
asi chcete použít metodu parse_known_args
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args, unknown = parser.parse_known_args(['--foo', 'foo', '--unknown1', 'unknow1'])
>>> args
Namespace(foo='foo')
>>> unknown
['--unknown1', 'unknow1']