Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2007 21:27:42

Juster
От:
Зарегистрирован: 2007-02-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор параметров в стиле юникс

Привет всем.
Поделитесь кодом для разбора CLI параметров в стиле Unix, хотелось-бы попроще. Чтобы можно было легко добавлять обязательные и необяз. параметры итд.



Офлайн

#2 Фев. 5, 2007 21:38:43

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#3 Фев. 10, 2007 19:35:48

Juster
От:
Зарегистрирован: 2007-02-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор параметров в стиле юникс

Подскажите плиз, как сделать чтобы optparse читал опции справа на лево.
И еще вопросик, есть код:
#!/usr/local/bin/python
# -*- coding: koi8-r -*-
from optparse import OptionParser
parser = OptionParser()
parser.add_option(“-f”, “–file”, dest=“filename”,
help=“write report to FILE”, metavar=“FILE”)
parser.add_option(“-q”, “–quiet”,
action=“store_const”, const=0, dest=“verbose”)
parser.add_option(“-v”, “–verbose”,
action=“store_const”, const=1, dest=“verbose”)
parser.add_option(“–noisy”,
action=“store_const”, const=2, dest=“verbose”)
options, args = parser.parse_args()
Он может парсить так:
$ ./arg.py -q -f/dev/acd0
$ ./arg.py -q -f/dev/acd0 something
$ ./arg.py –file=/dev/fd0 -v something
$ ./arg.py something
итд, вопрос как обработать “something”, т.е в итоге вывести ошибку о том что “something” в этих местах не ожидается. Оно вобщем-то не мешается, но…



Офлайн

#4 Фев. 13, 2007 05:44:46

Mkdir
Зарегистрирован: 2006-06-30
Сообщения: 211
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор параметров в стиле юникс

Для начала не #!/usr/local/bin/python, а #!/usr/bin/env python
Потому что у меня нет такого пути как /usr/local/bin/python. Питон у всех по-разному лежит.

Вообще, я бы поставил в конце исходника строки:
print options
print args

Затем передавал бы скрипту различные аргументы и смотрел бы результаты.
Если бы я так сделал, то сразу бы стало понятно как определить ситуацию с запуском: $./arg.py something

И, в результате, я бы сделал так:

if args:
    print "Warning: medved has been created."
или для большей наглядности так:
if len(args) > 0:
    print "Error: medved already exists."



Отредактировано (Фев. 13, 2007 05:45:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version