利用Python腳本實(shí)現(xiàn)傳遞參數(shù)的三種方式分享
背景:使用python腳本傳遞參數(shù)在實(shí)際工作過程中還是比較常用,以下提供了好幾種的實(shí)現(xiàn)方式:
一、使用sys.argv的數(shù)組傳入
說明:使用sys.argv必須按照先后的順序傳入對(duì)應(yīng)的參數(shù);sys.argv則封裝了傳入的參數(shù)數(shù)據(jù),作為數(shù)組的方式已經(jīng)傳入
import sys print("傳入?yún)?shù)的總長(zhǎng)度為:", len(sys.argv)) print("type:", type(sys.argv)) print("function name:", sys.argv[0]) try: print("第一個(gè)傳入的參數(shù)為:", sys.argv[1]) print("第二個(gè)傳入的參數(shù)為:", sys.argv[2]) except Exception as e: print("Input Error:", e)
通過命令行查看運(yùn)行結(jié)果:
二、使用argparse包傳入
說明:parser.add_argument 方法的type參數(shù)理論上可以是任何合法的類型,而且傳入的順序并沒有要求
參數(shù)使用的說明:
- --xx 完整參數(shù)輸入
- -x 簡(jiǎn)寫參數(shù)輸入
- type 輸入的參數(shù)將要被轉(zhuǎn)換的數(shù)據(jù)類型
- default 默認(rèn)值
- help 參數(shù)介紹
- nargs 可傳入的參數(shù)數(shù)量
- required 是否為必須參數(shù)
import argparse parser = argparse.ArgumentParser(description='argparse testing') parser.add_argument('--name','-n',type=str, default = "bk",required=True,help="a programmer's name") parser.add_argument('--age','-a',type=int, default=35,help='age of the programmer') parser.add_argument('--sex','-s',type=str, default='male') parser.add_argument('--favorite','-f',type=str, nargs="+",required=False,help="favorite of the programmer") args = parser.parse_args() print(args.name) print(args.age) print(args.sex) print(args.favorite)
查看運(yùn)行結(jié)果:
1.使用完整參數(shù)輸入
2.使用簡(jiǎn)寫參數(shù)輸入
3.多參數(shù)的傳入
三、使用shell腳本的方式向python腳本傳遞參數(shù)
1.使用shell腳本向python腳本傳遞參數(shù)
python腳本依然使用sys.argv的數(shù)組的方式傳入?yún)?shù)
原python如下:(python_test.py)
import sys print("傳入?yún)?shù)的總長(zhǎng)度為:", len(sys.argv)) print("type:", type(sys.argv)) print("function name:", sys.argv[0]) try: print("第一個(gè)傳入的參數(shù)為:", sys.argv[1]) print("第二個(gè)傳入的參數(shù)為:", sys.argv[2]) except Exception as e: print("Input Error:", e)
增加shell腳本如下:(shell_test.sh)
#!/bin/bash #定義變量 para1=$1 para2=$2 python python_test.py $para1 $para2
查看運(yùn)行結(jié)果:
2.使用shell腳本向python腳本內(nèi)的方法傳遞參數(shù)
python腳本如下:(python_test.py)
def fun1(): return "無參數(shù)方法fun1" def fun2(x): return f"有參數(shù)方法fun2且傳入的參數(shù)為{x}"
shell腳本如下:(shell_test.sh)
(1)無參數(shù)方式調(diào)用:
#!/bin/bash #定義變量 python -c 'import python_test;print(python_test.fun1())'
查看運(yùn)行結(jié)果:
(2)有參數(shù)方式調(diào)用
#!/bin/bash #定義變量 para=$1 python -c "import python_test;print(python_test.fun2('${para}'))"
查看運(yùn)行結(jié)果:
(3)一次調(diào)用所有方法,放入一個(gè)集合中,再調(diào)用切割方法獲取相應(yīng)的值
#!/bin/bash #定義變量 para=$1 #將結(jié)果保存為一個(gè)變量ALL_RESULTS內(nèi) ALL_RESULTS=$(python -c "import python_test;print(python_test.fun1(),python_test.fun2('${para}'))") #分別打印第一個(gè)方法的返回與第二個(gè)方法的返回 RESULTS_fun1=$(echo $ALL_RESULTS | cut -d' ' -f1) RESULTS_fun2=$(echo $ALL_RESULTS | cut -d' ' -f2) echo fun1方法的返回結(jié)果為:$RESULTS_fun1 echo fun2方法的返回結(jié)果為:$RESULTS_fun2
查看運(yùn)行結(jié)果:
到此這篇關(guān)于利用Python腳本實(shí)現(xiàn)傳遞參數(shù)的三種方式分享的文章就介紹到這了,更多相關(guān)Python腳本傳遞參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python網(wǎng)絡(luò)爬蟲學(xué)習(xí)筆記(1)
這篇文章主要為大家詳細(xì)介紹了python網(wǎng)絡(luò)爬蟲學(xué)習(xí)筆記的第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python shapely.geometry.polygon任意兩個(gè)四邊形的IOU計(jì)算實(shí)例
這篇文章主要介紹了python shapely.geometry.polygon任意兩個(gè)四邊形的IOU計(jì)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04解決Keras TensorFlow 混編中 trainable=False設(shè)置無效問題
這篇文章主要介紹了解決Keras TensorFlow 混編中 trainable=False設(shè)置無效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python requests timeout的設(shè)置
這篇文章主要介紹了Python requests timeout的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04pandas.DataFrame.to_json按行轉(zhuǎn)json的方法
今天小編就為大家分享一篇pandas.DataFrame.to_json按行轉(zhuǎn)json的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06python3 deque 雙向隊(duì)列創(chuàng)建與使用方法分析
這篇文章主要介紹了python3 deque 雙向隊(duì)列創(chuàng)建與使用方法,結(jié)合實(shí)例形式分析了python3 deque 雙向隊(duì)列創(chuàng)建、添加、清空、拷貝等相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-03-03