python獲得命令行輸入的參數(shù)的兩種方式
外部直接執(zhí)行python文件時(shí),我們有時(shí)需要獲得命令行的參數(shù)
獲得命令行參數(shù)的兩種方式
1、通過sys.argv
sys.argv:獲得一個(gè)參數(shù)列表,第一個(gè)值為文件名本身,通過sys.argv[1]獲得第文件名后的第一個(gè)參數(shù) ,多個(gè)參數(shù)使用空格隔開
測(cè)試代碼:
import sys print(sys.argv) print(len(sys.argv)) print(len(sys.argv[1]))
測(cè)試數(shù)據(jù):
python3 test.py 第一個(gè)參數(shù) 第二個(gè)參數(shù)
執(zhí)行結(jié)果:
['test.py', '第一個(gè)參數(shù)', '第二個(gè)參數(shù)']
3
5
[]
['第一個(gè)參數(shù)', '第二個(gè)參數(shù)']
2、通過getopt()獲得參數(shù)值
如果命令行需要通過linux那中指定參數(shù)名的方法運(yùn)行,可以使用getopt()來獲得參數(shù)內(nèi)容
命令【getopt.getopt(參數(shù)列表,"短選項(xiàng)參數(shù)",[長(zhǎng)選項(xiàng)參數(shù)])】參數(shù)有兩種維度區(qū)分:短選項(xiàng),長(zhǎng)選項(xiàng);帶參數(shù)值(開關(guān))和不帶參數(shù)值
短選項(xiàng)參數(shù)(命令行使用-參數(shù)名):由1個(gè)字母組成,如果字母后面跟冒號(hào):表示這個(gè)參數(shù)需要有參數(shù)值,否則表示不輸入?yún)?shù)值
例如:io:
表示入?yún)⒁斎?code>-i -o=xxx
長(zhǎng)選項(xiàng)參數(shù)(命令行使用--參數(shù)名):由[參數(shù)名=]表示,有值的參數(shù)一定要寫=,否則會(huì)拋錯(cuò)
例如:["help","input=","output="]
表示入?yún)⒁斎?--help --input=xxx --output=xxx
測(cè)試代碼:
import getopt
import sys
opts,args=getopt.getopt(sys.argv[1:],"i:ho:",["help","input=","output="])
print(opts)
print(args)
for opts,arg in opts:
print(opts)
if opts=="-h" or opts=="--help":
print("我只是一個(gè)說明文檔")
elif opts=="-i" or opts=="--input":
print("我只是輸入,輸入內(nèi)容如下:")
print(arg)
elif opts=="-o" or opts=="--output":
print("我只是輸出,輸出內(nèi)容如下:")
print(arg)
測(cè)試數(shù)據(jù):
python3 test.py -h -o=輸出 --input=輸入 最后一個(gè)參數(shù)
測(cè)試結(jié)果:
[('-h', ''), ('-o', '=輸出'), ('--input', '輸入')]
['最后一個(gè)參數(shù)']
-h
我只是一個(gè)說明文檔
-o
我只是輸出,輸出內(nèi)容如下:
=輸出
--input
我只是輸入,輸入內(nèi)容如下:
輸入
說明:使用getopt()需要注意一下,不能把未定義的參數(shù)放到短選項(xiàng)和長(zhǎng)選項(xiàng)的前面,否則-h --help這種不能讀取到參數(shù)值(源碼中不是很嚴(yán)謹(jǐn),遇到這種情況直接就break了),放到后面可以,也能通過args獲取到
getopt()中第一個(gè)參數(shù)寫sys.argv[1:]的緣故是命令行第一個(gè)參數(shù)為文件名本身,這里沒有意義
總結(jié)
到此這篇關(guān)于python獲得命令行輸入的參數(shù)的兩種方式的文章就介紹到這了,更多相關(guān)python命令行參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實(shí)例
今天小編就為大家分享一篇pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Python實(shí)現(xiàn)輕松識(shí)別數(shù)百個(gè)快遞單號(hào)
當(dāng)我們要寄出很多快遞時(shí),為了及時(shí)反饋物流信息,需要盡快將快遞單號(hào)提取出來。這時(shí)用手動(dòng)去識(shí)別真的太麻煩,所以本文將用Python實(shí)現(xiàn)輕松識(shí)別數(shù)百個(gè)快遞單號(hào),需要的可以參考一下2022-06-06
python實(shí)現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法
今天小編就為大家分享一篇python實(shí)現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11

