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