Python предоставляет модуль getopt, который помогает анализировать параметры и аргументы командной строки.
$ python test.py arg1 arg2 arg3
Модуль Python sys обеспечивает доступ к любым аргументам командной строки с помощью sys.argv. Это используется для двух целей:
Здесь sys.argv [0] - это программа, т.е. имя сценария.
Рассмотрим следующий сценарий test.py:
#!/usr/bin/python
import sys
print 'Количество аргументов:', len(sys.argv), 'аргументы.'
print 'Список аргументов:', str(sys.argv)
Теперь запустим вышеуказанный скрипт следующим образом:
$ python test.py arg1 arg2 arg3
Это дает следующий результат:
Количество аргументов: 4 аргумента.
Список аргументов: ['test.py', 'arg1', 'arg2', 'arg3']
Примечание: как упоминалось выше, первым аргументом всегда является название сценария, и оно также учитывается в количестве аргументов.
Python предоставил модуль getopt, который помогает анализировать опции и аргументы командной строки. Этот модуль предоставляет две функции и исключение для включения синтаксического анализа аргументов командной строки.
Этот метод анализирует параметры командной строки и список параметров. Ниже приведен простой синтаксис этого метода:
getopt.getopt(args, options, [long_options])
Подробности параметров:
Исключение возникает, когда в списке аргументов обнаруживается нераспознанная опция или когда опция, требующая аргумента, не имеет его.
Аргументом исключения является строка, указывающая причину ошибки. Атрибуты msg и opt содержат сообщение об ошибке и соответствующую опцию.
Предположим, мы хотим передать два имени файла через командную строку, и мы также хотим дать возможность проверить использование сценария. Использование скрипта выглядит следующим образом:
usage: test.py -i -o
Вот следующий скрипт для test.py:
#!/usr/bin/python
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print 'test.py -i -o '
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i -o '
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:])
Теперь запустите приведенный выше сценарий следующим образом:
$ test.py -h
usage: test.py -i -o
$ test.py -i BMP -o
usage: test.py -i -o
$ test.py -i inputfile
Input file is " inputfile
Выходной файл "