Python 命令行參數模塊

在命令行中給定的參數就是命令行參數。(即從輸入位置角度理解)。

eg:

mark

sys.argv

代碼

import sys

args = sys.argv
print(args)

命令行下

$ python argv_test.py
['argv_test.py']
$ python argv_test.py Hello 
['argv_test.py', 'Hello']
$ python argv_test.py Hello Word
['argv_test.py', 'Hello','Word']

代碼

import sys

args = sys.argv[1]
print(args)

命令行下

$ python argv_test.py Hello 
Hello
$ python argv_test.py Word
Word

argv[0] 腳本名

argv[1]第一個參數

argv[2]第二參數

[…]

argparse

argparse 是 Python 內置的一個用於命令項選項與參數解析的模塊,argparse 將會從 sys.argv 中解析出這些參數,並自動生成幫助和使用信息。也是Python官方推薦使用的模塊

簡單示例

定位參數

import argparse

parser = argparse.ArgumentParser() #創建ArgumentParser()對象
parser.add_argument('test')  #調用 add_argument() 方法添加參數
args = parser.parse_args() #使用 parse_args()解析出參數

print(args.test)

命令行

$ python argparse_test.py Hello
Hello
$ python argparse_test.py -h
usage: argparse_test.py [-h] test

positional arguments:
  test

optional arguments:
  -h, --help  show this help message and exit

可選參數

import argparse

parser = argparse.ArgumentParser() #創建ArgumentParser()對象
parser.add_argument('--test')  #調用 add_argument() 方法添加參數
args = parser.parse_args() #使用 parse_args()解析出參數

print(args.test)
$ python argparse_test.py --test Hello
Hello
$python argparse_test.py -h
usage: argparse_test.py [-h] [--test TEST]

optional arguments:
  -h, --help   show this help message and exit
  --test TEST

簡寫加幫助信息

parser.add_argument('-t','--test',help='This is a test')
$ python argparse_test.py --t Hello
Hello
$ python argparse_test.py -h
usage: argparse_test.py [-h] [-t TEST]

optional arguments:
  -h, --help            show this help message and exit
  -t TEST, --test TEST  This is a test

方法說明

argparse.ArgumentParser()

創建一個新ArgumentParser對象

部分參數

  • usage - 描述程序用法的字符串(默認值:從添加到解析器的參數生成)
  • description - 參數help之前顯示的文本(默認值:none)
  • epilog - 參數help後顯示的文本(默認值:none)
#!/usr/bin/env python3
# -*- coding:utf-8 -*

import argparse

parser = argparse.ArgumentParser(usage='1',description='2',epilog='3')
parser.add_argument('-t','--test',help='This is a test')

print(parser.parse_args().test)
python argparse_test.py -h
usage: 1

2

optional arguments:
  -h, --help            show this help message and exit
  -t TEST, --test TEST  This is a test

3

ArgumentParser.add_argument()

定義應如何解析單個命令行參數。

部分參數

  • name or flags - 選項字符串的名稱或列表,例如foo 或。-f, --foo

  • action - 在命令行遇到此參數時要採取的基本操作類型。

  • nargs - 應該使用的命令行參數的數量。

  • const - 某些操作nargs選擇所需的常量值。

  • default - 如果命令行中不存在參數,則生成的值。

  • type - 應轉換命令行參數的類型。

  • choices - 參數允許值的容器。

  • required - 是否可以省略命令行選項(僅限選項)。

  • help - 對參數的作用的簡要說明。

  • metavar - 用法消息中參數的名稱。

  • dest - 要添加到返回的對象的屬性的名稱 parse_args()

action

在命令行遇到此參數時要採取的基本操作類型。

  • store_true 參數存在,值爲True
  • store_false 參數存在,值爲False

store_true

parser.add_argument('-t','--test',action='store_true',help='This is a test')
$ python argparse_test.py -t
True

store_false

parser.add_argument('-t','--test',action='store_false',help='This is a test')
$ python argparse_test.py -t
False

nargs

命令行參數的數量,默認爲1

parser.add_argument('-t','--test',nargs=2,help='This is a test')
$ python argparse_test.py -t 1 2
['1', '2']

default

默認值

parser.add_argument('-t','--test',default='Hello',help='This is a test')
$ python argparse_test.py -t 
Hello

choices

指定參數選擇

parser.add_argument('-t','--test',choices=['Hello','Word'],help='This is a test')
$ python argparse_test.py -t 1
usage: 1
argparse_test.py: error: argument -t/--test: invalid choice: '1' (choose from 'Hello', 'Word')
$ python argparse_test.py -t Hello
a

required

parser.add_argument('-t','--test',choices=['a','b'],help='This is a test')
$ python argparse_test.py
usage: 1
argparse_test.py: error: argument -t/--test is required
$ python argparse_test.py -t Hello
Hello

Python argparse.ArgumentParser() Examples

參考

argparse - Python 3.7.3 documentation

optparse

命令行選項的解析器

簡單示例

import optparse

parser = optparse.OptionParser()
parser.add_option('-t','--test',dest='testname',help = 'This is test')
option,args=parser.parse_args()
print(option)
print(args)
print(option.testname)
$ python optarse_test.py -t 1
{'testname': '1'}
[]
1
$ python optarse_test.py -t 1 2
{'testname': '1'}
['2']
1
$ python optarse_test.py -h
Usage: optarse_test.py [options]

Options:
  -h, --help            show this help message and exit
  -t TESTNAME, --test=TESTNAME
                        This is test

方法說明

optparse.OptionParser()

創建解析器

部分參數

  • usage - 描述程序用法的字符串(默認值:腳本名 [options])
  • description - 參數help之前顯示的文本(默認值:none)
  • epilog - 參數help後顯示的文本(默認值:none)

OptionParser.add_option()

定義選項屬性

  • action - 在命令行遇到此參數時要採取的基本操作類型。
  • nargs - 應該使用的命令行參數的數量。
  • const - 某些操作和nargs選擇所需的常量值。
  • default - 如果命令行中不存在參數,則生成的值。
  • type - 應轉換命令行參數的類型。
  • choices - 參數允許值的容器。
  • help - 對參數的作用的簡要說明。
  • metavar - 用法消息中參數的名稱。
  • dest - 要添加到返回的對象的屬性的名稱 parse_args()。

parse_args()

返回兩個值

  • options - 一個包含所有選項值的對象

  • args - 解析選項後剩餘的位置參數列表

參考

optparse - Python 3.7.3 documentation

getopt

命令行選項的C風格解析器

getopt.getopt(args,shortopts,longopts = [] )

返回兩個值,第一個選項值列表,第二個剩下的參數列表

  • args - 是要解析的參數列表
  • shortopts - 短選項 eg:h
  • longopts - 長選項 eg:help

當短選項需要接受值是後面加:

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

當長選項需要接受值是後面加=

opts, args = getopt.getopt(sys.argv[1:], "h:", ["help="])

getopt.GetoptError

當在參數列表中找到無法識別的選項或者沒有給出需要參數的選項時,會引發此問題。

示例

import getopt,sys

try:
    opt,args = getopt.getopt(sys.argv[1:],'t:h',['test=','help'])
except getopt.GetoptErrot as err:
    print(err)
    sys.exit(2) #2 表示shell命令錯誤
for o,a in opt:
    if o in ('-h','--help'):
        print('eg: -t Hello')
    elif o in ('-t','--test'):
        test = a
print(a)
$ python getopt_test.py -t Hello
Hello
$ python getopt_test.py -h
eg: -t Hello
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章