Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2012 12:28:51

AlexSSpirit
От:
Зарегистрирован: 2012-03-07
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

getopt.getopt что это?

Уже несколько дней прихожу к попыткам понять, что делает функция getopt.getopt и раз за разом не получается. Перечитал по нескольку раз пару документаций, но всё равно не могу разобраться в ней.
Ребята кому несоставляет тяжкого труда, обьяснить скажим к примеру вот эти строчки:

s0 = v0 = 0;  a = t = 1
import getopt, sys
options, args = getopt.getopt(sys.argv[1:], '', ['t=', 's0=', 'v0=', 'a='])

обьясните пожалуйста что происходит.



Отредактировано AlexSSpirit (Июнь 25, 2012 12:29:25)

Офлайн

#2 Июнь 25, 2012 12:45:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

getopt.getopt что это?

import getopt, sys
options, args = getopt.getopt(sys.argv[1:], 'a:b:c:')
print options, args
smirnov@smirnov ~ $ python uu.py -o 4
Traceback (most recent call last):
  File "uu.py", line 2, in <module>
    options, args = getopt.getopt(sys.argv[1:], 'a:b:c:')
  File "/usr/lib/python2.7/getopt.py", line 90, in getopt
    opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
  File "/usr/lib/python2.7/getopt.py", line 190, in do_shorts
    if short_has_arg(opt, shortopts):
  File "/usr/lib/python2.7/getopt.py", line 206, in short_has_arg
    raise GetoptError('option -%s not recognized' % opt, opt)
getopt.GetoptError: option -o not recognized
import getopt, sys
options, args = getopt.getopt(sys.argv[1:], 'a:b:o:')
print options, args
>>> [('-o', '4')] []

То есть проверяет, были ли указаны обязательные параметры запуска скрипта

ИМХО, лучше юзать argparse



Офлайн

#3 Июнь 25, 2012 13:36:49

AlexSSpirit
От:
Зарегистрирован: 2012-03-07
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

getopt.getopt что это?

FishHook

То есть проверяет, были ли указаны обязательные параметры запуска скрипта
Прости, я новичок и мне твои комменты как мёртову припарка)

Буду благодарен, если разложишь по пунктам эту строчку?
options, args = getopt.getopt(sys.argv[1:], '', ['t=', 's0=', 'v0=', 'a='])






Офлайн

#4 Июнь 25, 2012 13:48:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

getopt.getopt что это?

AlexSSpirit
Прости, я новичок и мне твои комменты как мёртову припарка)

код
[code]
import getopt, sys
options, args = getopt.getopt(sys.argv[1:], 'a:b:c', ["help", "output="])
print options
[/code]

Запуск этого кода в консоле с параметрами

[code ]
python uu.py -a 5 --output=out.txt
[/code]

результат

[code]
[('-a', '5'), ('--output', 'out.txt')]
[/code]

На пальцах:
Ты запускаешь скрипт с параметрами - игру в дурака, в зависимости от параметров может по разному работать скрипт. Допустим, в примере выше, параметр а означает количество игроков, а output - файл для лога результатов.
sys.argv[1:] - получаешь параметры запуска скрипта.
'a:b:c' - перечисляешь допустимые параметры
["help", "output="] - и "длинные" параметры. которые обычно необязательны и дублируют короткие



Отредактировано FishHook (Июнь 25, 2012 13:52:42)

Офлайн

#5 Июнь 25, 2012 13:57:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

getopt.getopt что это?

Что-то опять сломалось на форуме, лишние теги откуда-то берутся



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version