Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 29, 2015 17:28:03

l1nx
Зарегистрирован: 2015-04-12
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

Нужно чтоб скрипт работал только с 1м аргументом, во все остальных случаях показывал ошибку.
Так сделала через if

if len(sys.argv) != 2: sys.exit("Error: need 1 argument: path to file")
Если использовать argparse, то будет что-то такое
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path_to_file', nargs='+', help='need path to file')
args = parser.parse_args()
print vars(args)
но nargs='+' и ‘?’ не подходят, и больше не нашла как указывать количество аргументов в доке

Офлайн

#2 Апрель 29, 2015 22:35:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

l1nx
parser.add_argument('path_to_file', nargs='+', help='need path to file')
parser.add_argument('path_to_file', help='need path to file')



Офлайн

#3 Апрель 30, 2015 14:57:14

l1nx
Зарегистрирован: 2015-04-12
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

Сделала так

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path_to_file', nargs=1, help='need path to file')
print parser.parse_args().path_to_file[0]
если не писать nargs, то выведет только первый символ

Офлайн

#4 Май 1, 2015 01:40:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

l1nx
если не писать nargs, то выведет только первый символ
nargs=1 - это масло масляное.

l1nx
print parser.parse_args().path_to_file[0]
print parser.parse_args().path_to_file



Офлайн

#5 Май 1, 2015 20:54:39

l1nx
Зарегистрирован: 2015-04-12
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

py.user.next
А как получать значение именованных аргументов, чтоб использовать их в условиях?
Делала так, но похоже на быдлокод

#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path_to_file', help='need path to file')
parser.add_argument('-v', nargs='?', default='false', help='verbose mode')
args = vars(parser.parse_args())
print args['path_to_file'], args['v']
if not args['v']:
    print "xxx"

Офлайн

#6 Май 2, 2015 00:01:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как проверить в argparse количество аргументов?

parser.add_argument('-v', action='store_true')



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version