argparse в python3.2.3 на Windows 7 изглежда не анализира

тъй като пуснах Python на Windows, ето следващият проблем, който срещнах с argparse и за който не видях решение. Преди използвах optparse. Ето моят код:

import argparse
parser = argparse.ArgumentParser(
        description = 'Test description')       # main description for help

parser.add_argument('-d', '--dir',                 # -u or --user option           
        dest = "dir",
        help = 'directory to start with')           
args = parser.parse_args()
print(args.dir)

но когато стартирам този код с едно от двете

code.py -d test
code.py --dir test

Винаги получавам None като изход. Чувствам, че това е нещо тривиално и нещо очевидно, което съм пренебрегнал, но не мога да го видя.

Танкове

Алекс


person Alex    schedule 14.09.2012    source източник
comment
Работи за мен на OSX 10.7.4, Python 2.6.5, но съм изненадан, че това ще се провали на Windows.   -  person Russell Borogove    schedule 14.09.2012
comment
Работи добре на моя Windows 7 x64, с cpython 3.2.3. Какъв е резултатът от code.py --help?   -  person phihag    schedule 14.09.2012
comment
code.py --help дава също None! Предполагам, че argparse чете автоматично sys.argv или трябва да предам това на себе си някъде?   -  person Alex    schedule 14.09.2012
comment
@Alex Да, argparse автоматично ще търси sys.argv, освен ако не му кажете друго.   -  person John Szakmeister    schedule 14.09.2012
comment
Едно очевидно, което трябва да направите, е да добавите ред, отпечатващ действителната стойност на sys.argv, за да докажете, че вашият код всъщност получава правилните аргументи.   -  person Simon Callan    schedule 14.09.2012


Отговори (1)


Проблемът изглежда е причинен от Windows и начина, по който кодът се опитва да бъде изпълнен от командния ред. В дадения пример тестовият скрипт беше извикан директно от командния ред, без python преди кода, както беше предложено в този отговор.

Ако кодът се изпълни като

python code.py

се вижда очакваното поведение и аргументите са правилно анализирани в кода.

Така че или настройката на системата Windows все още не е завършена, или предложението в горната връзка е непълно.

person Alex    schedule 14.09.2012