在命令行中給定的參數就是命令行參數。(即從輸入位置角度理解)。
eg:
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 - 應該使用的命令行參數的數量。
-
default - 如果命令行中不存在參數,則生成的值。
-
type - 應轉換命令行參數的類型。
-
choices - 參數允許值的容器。
-
required - 是否可以省略命令行選項(僅限選項)。
-
help - 對參數的作用的簡要說明。
-
metavar - 用法消息中參數的名稱。
-
dest - 要添加到返回的對象的屬性的名稱 parse_args()。
action
在命令行遇到此參數時要採取的基本操作類型。
store_true
參數存在,值爲Truestore_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