Аргументы командной строки Python
Python предоставляетgetoptмодуль для получения аргументов командной строки.
$ python test.py arg1 arg2 arg3
В Python также можно использоватьsysизsys.argvдля получения аргументов командной строки:
sys.argv — это список аргументов командной строки.
len(sys.argv) — это количество аргументов командной строки.
Примечание:sys.argv
Пример
Код файла test.py выглядит следующим образом:
Пример
# -*- coding: UTF-8 -*-
import sys
print 'Количество аргументов:', len(sys.argv), ' аргументов.'
print 'Список аргументов:', str(sys.argv)
При выполнении приведенного выше кода результат будет следующим:
$ python test.py arg1 arg2 arg3 参数个数为: 4 个参数。 参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
Модуль getopt
Модуль getopt — это модуль, специально предназначенный для обработки аргументов командной строки, используемый для получения параметров и аргументов командной строки, т.е. sys.argv. Параметры командной строки делают аргументы программы более гибкими. Поддерживает режим коротких опций-и режим длинных опций--。
Этот модуль предоставляет два метода и один обработчик исключений для разбора аргументов командной строки.
Метод getopt.getopt
Метод getopt.getopt используется для разбора списка аргументов командной строки, синтаксис следующий:
getopt.getopt(args, options[, long_options])
Описание параметров метода:
args: Список аргументов командной строки, которые нужно разобрать.
options: Задается в строковом формате, двоеточие послеoptionsthe colon after:указывает, что если этот параметр установлен, должен быть дополнительный аргумент; в противном случае аргумент не прилагается.
long_options: Задается в формате списка, знак равенства послеlong_optionsthe equal sign after=указывает, что параметр должен иметь дополнительный аргумент; без знака равенства это означает, что параметр не принимает дополнительный аргумент.
Возвращаемое значение этого метода состоит из двух элементов: первый —(option, value)список кортежей. Второй — список аргументов, содержащий те, что без-или--аргументов.
Другой метод — getopt.gnu_getopt, здесь он подробно не рассматривается.
Исключение getopt.GetoptError
Это исключение возникает, когда список аргументов не найден или когда обязательный аргумент параметра пуст.
Аргумент исключения — строка, указывающая причину ошибки. Атрибутыmsgиopt— это сообщение об ошибке для соответствующего параметра.
Пример
Предположим, мы создаем такой скрипт: мы можем передать два имени файла в файл скрипта через командную строку, и при этом используем другую опцию для просмотра использования скрипта. Использование скрипта выглядит так:
usage: test.py -i <inputfile> -o <outputfile>
Код файла test.py выглядит следующим образом:
Пример
# -*- coding: UTF-8 -*-
import sys, getopt
def argv(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile:,"ofile"])
except getopt.GetoptError:
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print 'Входной файл:', inputfile
print 'Выходной файл:', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
При выполнении приведенного выше кода результат будет следующим:
$ python test.py -h usage: test.py -i <inputfile> -o <outputfile> $ python test.py -i inputfile -o outputfile 输入的文件为: inputfile 输出的文件为: outputfileДругие расширения
Базовый синтаксис Python