LINUX.ORG.RU

[Python] OptionParser

 


0

1

Задали опции и читаем их, после для теста просто выводим:

parser = OptionParser(usage="usage: %prog [options] filename", version="%prog 1.0")
parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout")

(options, args) = parser.parse_args()
print(options)

Как лучше проверить отсутствие агргументов и если их нет то вывести хелп. В голову пришло только такое:

if not sys.argv[1:]:
	parser.print_help()
	return
Может есть способ с использованием самого OptionParser? В документации ничего похожего не нашел.


required=TRUE не подойдет?

silw ★★★★★
()

parser.error('You need an argument')

Навскидку. В документацию лезть лень.

baverman ★★★
()

Кажись, понял проблему.

1) Если аргумент нужен, сделай его позиционным

2) Подумай над оксюмороном «обязательно необходимая/требуемая *опция*»

baverman ★★★
()
Ответ на: комментарий от baverman

> Почему не просто args? Потому что у sys нет аттрибута args, а argv[1:] использую т.к. первым элементом хранится путь до файла который запущен.

1) Если аргумент нужен, сделай его позиционным

Что-то не нашел в документации как это задать для аргумента.

Идея вообще на данный момент если есть хоть какие-то аргументы, то скрипт отрабатывает, если нету, то выдает ошибку, немного поменял получилось вот:

parser = OptionParser(usage="usage: %prog [options] filename", version="%prog 1.0")
parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout")

if not sys.argv[1:]:
	parser.error('You need an argument')

options, args = parser.parse_args()
print(options)
[[/code]]

Gr1N
() автор топика
Ответ на: комментарий от baverman

До согласен, избавился от sys.argv, теперь все проще и удобнее. Спасибо за наводки.

Gr1N
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.