Прекратить argparse от сглаживания пути к файлу - PullRequest
5 голосов
/ 09 сентября 2011

Я использую python argparse со следующим определением аргумента:

parser.add_argument('path', nargs=1, help='File path to process')

Но когда я ввожу свою команду с аргументом wildcard, argparse перетаскивает все пути к файлам и завершается с ошибкой.

Как мне получить argparse, чтобы не копировать файлы?

Ответы [ 3 ]

8 голосов
/ 10 сентября 2011

Оболочка расширяет подстановочный аргумент до того, как argparse получит шанс увидеть его.Поместите кавычки вокруг аргумента с подстановочными знаками, чтобы не допустить его расширения оболочкой.

Позже вы можете выполнить расширение с подстановочными знаками с помощью glob.glob .

7 голосов
/ 10 сентября 2011

Как получить argparse, чтобы не копировать файлы?

Вы не.

Вы получаете снаряд, чтобы прекратить болтать

Тем не менее. Давайте немного подумаем.

Вы говорите это в своем коде

parser.add_argument('path', nargs=1, help='File path to process')

Но вы фактически предоставляете подстановочные знаки, когда запускаете его.

Один из этих двух не прав. Либо прекратите предоставлять подстановочные знаки во время выполнения, либо исправьте argparse, чтобы разрешить использование нескольких имен файлов.

4 голосов
/ 09 сентября 2011

Глобирование выполняется вашей оболочкой, а не модулем argparse.напечатайте sys.argv в начале, и вы увидите, что argparse получает как ввод.

...