Python - parsování parametrů skriptu

cinnamon

Python - parsování parametrů skriptu
« kdy: 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.


wamba

Re:Python - parsování parametrů skriptu
« Odpověď #1 kdy: 30. 09. 2018, 10:40:32 »
nargs=argparse.REMAINDER by mohlo pomoci, viz https://docs.python.org/3/library/argparse.html#nargs
Kód: [Vybrat]
python -c 'import argparse; parser = argparse.ArgumentParser(); parser.add_argument(\'args\', nargs=argparse.REMAINDER); print(parser.parse_args())' 1 -help 1 --as  3
Kód: [Vybrat]
Namespace(args=['1', '-help', '1', '--as', '3'])

cinnamon

Re:Python - parsování parametrů skriptu
« Odpověď #2 kdy: 30. 09. 2018, 11:07:16 »
nargs=argparse.REMAINDER by mohlo pomoci, viz https://docs.python.org/3/library/argparse.html#nargs
Kód: [Vybrat]
python -c 'import argparse; parser = argparse.ArgumentParser(); parser.add_argument(\'args\', nargs=argparse.REMAINDER); print(parser.parse_args())' 1 -help 1 --as  3
Kód: [Vybrat]
Namespace(args=['1', '-help', '1', '--as', '3'])

Jak jsi to napsal, tak to samozřejmě funguje, ale když zadám parametr ve tvaru
Kód: [Vybrat]
--test-directory=$HOME/testtak parsování skončí chybou unrecognized arguments

cinnamon

Re:Python - parsování parametrů skriptu
« Odpověď #3 kdy: 30. 09. 2018, 14:06:58 »
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('=').

Sajfi

Re:Python - parsování parametrů skriptu
« Odpověď #4 kdy: 30. 09. 2018, 14:48:24 »


Re:Python - parsování parametrů skriptu
« Odpověď #5 kdy: 01. 10. 2018, 09:36:52 »
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

Karel

Re:Python - parsování parametrů skriptu
« Odpověď #6 kdy: 01. 10. 2018, 10:10:42 »
Chci pouzit argparse, ale nechce se mi ho konfigurovat. Asi tak nejak zni dotaz.

Inkvizitor

Re:Python - parsování parametrů skriptu
« Odpověď #7 kdy: 01. 10. 2018, 10:14:09 »
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).

cinnamon

Re:Python - parsování parametrů skriptu
« Odpověď #8 kdy: 01. 10. 2018, 11:08:33 »
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.

karel

Re:Python - parsování parametrů skriptu
« Odpověď #9 kdy: 01. 10. 2018, 14:43:41 »
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

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Python - parsování parametrů skriptu
« Odpověď #10 kdy: 01. 10. 2018, 19:33:49 »
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.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Python - parsování parametrů skriptu
« Odpověď #11 kdy: 01. 10. 2018, 19:41:40 »
asi chcete použít metodu parse_known_args

Kód: [Vybrat]
>>> 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']