Python命令列引數定義及需要注意的地方

2022-09-27 07:15:07 字數 1942 閱讀 9147

在命令列中執行python**是很常見的,下面介紹如何定義命令後面跟的引數。

1  常規用法

python**中主要使用下面幾行**來定義並獲取需要在命令列中賦值的引數:

import argparse

parser = argparse.argumentparser("description.") # ————1————

parser.add_argument('--test1', type=str, default="1", help="test1 help.") # ————2————

parser.add_argument('--test2', type=float, default=2.1, help="test2 help.") # ————2————

args = parser.parse_args() # ————3————

print(args)

test1, test2 = args.test1, args.test2 # ————4————

print(type(test1), test1, test1 + " add test")

print(type(test2), test2, test2 + 100)

注釋:1、獲取外部引數物件例項。可以傳入字串來描述總體的外部引數。

2、定義外部引數,可以多次呼叫來定義多個外部引數。函式的第乙個引數是外部引數的名稱,建www.cppcns.com議以兩個減號開頭,中間不要使用數字字母下劃線以外的符號,否則容易出錯。type是你希望外部引數傳入後轉換的型別,比如--test1定義為str,即使命令列傳參不新增引號,函式也將它轉換為字串(當然不加引號傳字串就不能用空格了)。而--test2是float,即使命令列傳參帶了引號,只要能轉換為數字,函式都能轉換為float型別。default是外部引數的預設值程式設計客棧。如果命令列不對外部引數賦值而使用預設值,函式不會對你定義的預設值進行type上的轉換,所以default最好直接定義為type指定的型別(比如--test1的default定義為"1"而不是1)。help傳入對當前外部引數的描述,命令列中使用--help輸出的就是這個。 

3、分析獲取的外部引數。傳出的是乙個命名空間,類似於字典,但使用屬性的方式而不是key索引來獲取命名對應的外部引數值。

4、以獲取屬性的方式獲取外部引數。

需要注意的是,外部引數的定義必須寫在獲取外部引數之前。也就是說,parser.add_argument()要寫在parser.parse_args()之前,否則外部引數無法被命令列捕獲。另外,如果**中沒有parser.parse_args(),命令列就不能傳參。

用命令列執程式設計客棧行以上**,命令與輸出如下(以上**儲存為test.py):

可以看出,故意以數字和字串的方式分別對字串和float型別的外部引數賦值,函式都能正確地轉換並正確地參與運算。

使用預設值時輸出如下:

2&nb程式設計客棧sp; 注意事項

通過以上的實驗,argparse庫似乎能將外部引數正確轉換為各種型別,只要能轉換。下面來實驗是否能傳入乙個numpy陣列。**如下:

import numpy as np

import argparse

parser = argparse.argumentparser()

parser.add_argument('--array', 程式設計客棧type=np.array, default=np.array([1,2]))

args = parser.parse_args()

print(args)

array = args.array

print(type(array))

print(array)

print(array + 1)

當使用預設值時:

執行正確,但當我們意圖傳入外部引數時:

儘管傳入的[1,2]被轉換為numpy.ndarray型別,它卻並不能參與運算。所以,並不是所有的型別都能在命令列中傳入的。

python 命令列引數

本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....

python 命令列引數

python呼叫時,可以直接在命令列中加入呼叫引數,通過sys模組的argv來進行解析,如下 lixinglei bogon someother python param.py port 8080 username lixinglei lixinglei bogon someother vim pa...

python 命令列引數

一 getopt模組 主要用到了模組中的函式 options,args getopt.getopt args,shortopts,longopts 引數args 一般是sys.argv 1 過濾掉sys.argv 0 它是執行指令碼的名字,不算做命令列引數。shortopts 短格式 例如 hp i...