命令列執行Python指令碼時傳入引數的三種方式

2021-09-26 22:59:22 字數 1404 閱讀 6627

三種常用的方式

如果在執行python指令碼時需要傳入一些引數,例如gpus與batch_size,可以使用如下三種方式。

sys.ar**

sys模組是很常用的模組, 它封裝了與python直譯器相關的資料,例如sys.modules裡面有已經載入了的所有模組資訊,sys.path裡面是pythonpath的內容,而sys.ar**則封裝了傳入的引數資料。

使用sys.ar**接收上面第乙個命令中包含的引數方式如下:

import sys

gpus = sys.ar**[1]

#gpus = [int(gpus.split(','))]

batch_size = sys.ar**[2]

print gpus

print batch_size12

3456

argparse

import argparse

parser = argparse.argumentparser(description='manual to this script')

parser.add_argument('--gpus', type=str, default = none)

parser.add_argument('--batch-size', type=int, default=32)

args = parser.parse_args()

print args.gpus

print args.batch_size12

3456

7需要注意的是,指令碼執行命令python script.py -gpus=0,1,2 --batch-size=10中的--batch-size會被自動解析成batch_size.

parser.add_argument 方法的type引數理論上可以是任何合法的型別, 但有些引數傳入格式比較麻煩,例如list,所以一般使用bool, int, str, float這些基本型別就行了,更複雜的需求可以通過str傳入,然後手動解析。bool型別的解析比較特殊,傳入任何值都會被解析成true,傳入空值時才為false

python script.py --bool-val=0 # args.bool_val=true

python script.py --bool-val=false # args.bool_val=true

python script.py --bool-val= # args.bool_val=什麼都不寫false12

3通過這個方法還能指定命令的幫助資訊。具體請看api文件:

python script.py -gpus=0,1,2 --batch_size=10

1對應的python**為:

def main(_):

print flags.gpus

print flags.batch_size

ccl命令列執行lisp指令碼

最近在學習lisp,lisp作為傳說中最古老的語言之一,fp的經典語言之一,對我這種喜歡瞎研究的人來說,是很有吸引力滴。不過,我要說的是,lisp可不像python這麼方便快捷,不同dialect之間差別還是挺大的,就執行乙個lisp指令碼,似乎都不是那麼簡單的事情。對於被python慣壞了了的我來...

Jmeter命令列執行jmx指令碼

簡介 使用非 gui 模式,即命令列模式執行 jmeter 測試指令碼能夠大大縮減所需要的系統資源。本文介紹windows下以命令列模式執行jmeter指令碼的方法。1.1.命令介紹 jmeter壓力測試命令列啟動指令碼 安裝路徑 jmeter n t 指令碼路徑 九牧登入.jmx l log路徑 ...

python命令列執行手記

python指令碼完成後,一般除錯我們直接在ide中執行,但是正式執行的時候,我們不可能總是開啟ide來執行吧。所以我們一般通過命令列來執行指令碼。但是在執行中發現ide執行沒有問題,可是在命令列執行就會報錯 modulenotfounderror no module named 需要在執行的py檔...