Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 [ 93 ] 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

21.10 getopt - обработка опций в командной строке

Модуль getopt помогает обрабатывать аргументы, переданные программе в командной строке (sys.argv). Функция getopt() модуля использует такие же правила, как и одноименная функция языка C в UNIX, включая специальное значение аргументов - и -. Длинная запись опций, аналогичных тем, которые используются программами GNU, также может быть использована, если задан третий аргумент функции getopt() .

getopt( args, options [, long options])

Обрабатывает список аргументов args (обычно sys.argv[1:]).

Аргумент options должен быть строкой из букв, которые будут распознаваться как опции. Если опция требует наличия аргумента, после соответствующей буквы в строке options должно следовать двоеточие (:).

Если задан аргумент long options, он должен быть списком строк с именами опций, которые будут распознаваться в виде длинной записи, без приставки -- . После имени опций, требующих аргумента, в строке должен следовать знак равенства (=).

Функция возвращает кортеж из двух элементов: первый является списком пар (option, value) (имя опции и соответствующее ей значение) и список аргументов, оставшихся необработанными (концевой срез последовательности args). Строки option в списке пар начинаются с одного дефиса для опций с короткой записью и с двух дефисов для опций с длинной записью. value является аргументом соответствующей опции или пустой строкой, если опция не имеет аргумента. Опции в списке следуют в том же порядке, в котором они следовали в args. Допускается смешение короткой и длинной записи опций.

GetoptError r

Исключен

познанная опция или опция, требующая аргумента, записана без него. Исключение

error

Исключения этого класса генерируются, если в списке аргументов найдена нерас-

getpass( [prompt]) (UNIX, Windows, Macintosh)

Запрашивает пароль у пользователя без отображения вводимых символов. В качестве приглашения используется строка prompt (по умолчанию равна Password: ).

getuser() (UNIX, Windows)

Возвращает регистрационное имя пользователя. Эта функция последовательно проверяет переменные окружения LOGNAME, USER, LNAME и USERNAME и возвращает значение первой переменной, имеющей непустое значение. Если ни одна из этих переменных не установлена, используется модуль pwd там, где он доступен (в противном случае генерируется исключение ImportError).



21.10. getopt - обработка опций в командной строке 297

также будет сгенерировано, если при использовании длинной записи задан аргумент для опции, которая его не требует. Исключения класса GetoptError имеют следующие атрибуты:

Сообщение об ошибке.

Имя опции, с которой связана ошибка, или пустая строка, если ошибка не связана с определенной опцией.

Имя GetoptError появилось в версии 1.6. Для совместимости с более старыми версиями присутствует имя error, ссылающееся на GetoptError.

Приведем небольшой пример, использующий только короткую запись опций:

>>> import getopt

>>> args = -a -b -cfoo -d bar a1 a2.split()

>>> args

[-a, -b, -cfoo, -d, bar, a1, a2] >>> optlist, args = getopt.getopt(args, abc:d:)

>>> optlist

[(-a, "), C-b, "), C-c, foo), C-d, bar)]

>>> args [a1, a2]

Использовать длинную запись опций так же просто:

>>> s = --condition=foo -testing --output-file ... abcdef -x a1 a2 >>> args = s.splitO >>> args

[--condition=foo, --testing, -output-file, abcdef, -x, a1, a2]

>>> optlist, args = getopt.getopt(args, x, [ ... condition=, output-file=, testing])

>>> optlist

[(--condition, foo), (--testing, ), (--output-file, abcdef), (-x, )] >>> args [a1, a2]

В реальной программе модуль getopt используется обычно примерно следующим образом:

import getopt, sys



def main(): try:

opts, args = getopt.getopt(sys.argv[1:],

ho:,

[help, output=])

except getopt.GetoptError:

# выводим подсказку и выходим: print << sys.stderr, USAGE sys.exit(2) output = None for o, a in opts:

if o in C-h, --help): print USAGE sys.exitO if o in (-o, -output): output = a

# ...

if name == main :

main()

21.11 tempfile - создание временных файлов

Этот модуль предоставляет переносимый способ генерации уникальных имен для временных файлов и их создания:

mktemp ([suffix])

Возвращает уникальное имя временного файла. Это абсолютный путь файла, который в момент вызова функции не существует. При последующих вызовах функция mktemp() никогда не вернет такое же имя. Если задан аргумент suffix, он будет использоваться в качестве последней части (суффикса) имени файла.

TemporaryFile( [mode [, bufsize [, suffix]]])

Возвращает файловый (или аналогичный) объект, который может быть использован для временного хранения данных. Файл создается максимально безопасным способом в соответствующем временном каталоге. В UNIX каталог, в котором находится файл, удаляется, что позволяет избежать атак, касающихся создания символической ссылки на файл или замены файла ссылкой на другой файл. В любом случае файл автоматически удаляется, как только он будет закрыт (включая неявное закрытие при достижении нуля количества ссылок на файловый объект).

Аргумент mode указывает режим, в котором файл будет открыт. По умолчанию он равен w+b, что позволяет как записывать, так и читать из файла не закрывая

Т1 Т1 Т1

USAGE = """\



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 [ 93 ] 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145