Аргументы командной строки Python

Python 基础语法Базовый синтаксис Python

Python предоставляетgetoptмодуль для получения аргументов командной строки.

$ python test.py arg1 arg2 arg3

В Python также можно использоватьsysизsys.argvдля получения аргументов командной строки:

  • sys.argv — это список аргументов командной строки.

  • len(sys.argv) — это количество аргументов командной строки.

Примечание:sys.argv

Пример

Код файла test.py выглядит следующим образом:

Пример

#!/usr/bin/python
# -*- 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 выглядит следующим образом:

Пример

#!/usr/bin/python
# -*- 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 基础语法Базовый синтаксис Python

Другие расширения