此篇文章主要是闡述了搭建Pythonargv的4種比較常見方式方法,文章內容緊扣主題進行詳盡的基本介紹,具有很強的實用價值,務必的朋友可以學習一下。
序言
小伙伴們好,在平時的撰寫Python腳本制作的過程當中,我們通常需要根據argv傳到某些自變量主要參數,使新項目應用更加靈便便捷。
分別是:
內嵌sys.argv控制模塊
內嵌argparse控制模塊
內嵌getopt模塊
第三方平臺依賴庫click
1.sys.argv 搭建argv非常簡單、比較常見的方法是運用內嵌的「sys.argv」控制模塊。 它是把主要參數以一種規范有序目錄傳到,因而在使用過程中傳參次序務必固定不動。 因而,這種方法適用主要參數數量少且情景固定工程中。 import sys if __name__=='__main__': #獲取參數列表 #注意:sys.argv[0]代表第一個參數,即:腳本名稱「1_sys.argv.py」 #其他參數列表 args=sys.argv[1:] #參數個數 args_length=len(sys.argv)if sys.argv else 0 print("排除運行主文件參數,其他參數列表為:",args) print("參數總數:",args_length) #使用 #python3 1_sys.argv.py arg1 arg2 #排除運行主文件參數,其他參數列表為:[arg1,arg1] #參數總數:3
需要注意的是,在腳本中通過「sys.argv」獲取的參數列表中,第一個參數代表腳本主文件名稱
2.argparse
內置的argparse模塊可以非常輕松地編寫出友好的命令行參數腳本,并且它能自動生成幫助使用手冊,在用戶給程序傳入無效參數時能拋出清晰的錯誤信息
官方文檔:
使用它構建命令行參數包含3個步驟
構建參數解析對象添加參數添加參數解析參數
構建命令行參數解析對象
import argparse ... #構建一個命令行參數解析對象 parser=argparse.ArgumentParser(description='命令行參數') ... 添加命令行參數: 需要指出的是,--arg1用于指定參數名稱,-a1代表dest目標變量值(簡寫) ... #設置3個參數 #參數1:arg1,整型,非必須傳入參數 #參數2:arg2,字符串,非必須傳入參數,包含默認值「xag」 #參數3:arg3,字符串類型,必須傳入的參數 parser.add_argument('--arg1','-a1',type=int,help='參數1,非必須參數') parser.add_argument('--arg2','-a2',type=str,help='參數2,非必須參數,包含默認值',default='xag') parser.add_argument('--arg3','-a3',type=str,help='參數3,必須參數',required=True) ... 解析出參數值: ... #解析參數,獲取所有的命令行參數(Namespace),然后轉為字典 args=vars(parser.parse_args()) #獲取所有參數 print("所有命令行參數為:") for key in args: print(f"命令行參數名:{key},參數值:{args[key]}") ... 使用的時候,我們就可以通過「-h/--help」命令參數查看幫助文檔 #查看命令行參數幫助文檔 python3 2_argparse.py--help #或 python3 2_argparse.py-h 上面添加的3個參數,參數arg1、arg2非必須傳值,arg3必須傳值,另外參數arg2指定了默認值 #參數arg3必須,參數arg1和參數arg2非必須,其中參數arg2設置了默認值 #傳入參數arg3 #python3 2_argparse.py--arg3 123 #python3 2_argparse.py-a3 123 xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a3 123 所有命令行參數為: 命令行參數名:arg1,參數值:None 命令行參數名:arg2,參數值:xag 命令行參數名:arg3,參數值:123 #傳入參數arg1、arg3 xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a3 123 所有命令行參數為: 命令行參數名:arg1,參數值:111 命令行參數名:arg2,參數值:xag 命令行參數名:arg3,參數值:123 #傳入參數arg1、arg2、arg3 xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a2 222-a3 123 所有命令行參數為: 命令行參數名:arg1,參數值:111 命令行參數名:arg2,參數值:222 命令行參數名:arg3,參數值:123
3.getopt
getopt是Python中的內嵌標準模塊,需要結合sys.argv控制模塊,立即分析腳本運行時主要參數
使用格式:getopt(args,shortopts,longopts=[])
其中
args:參數列表,可以通過sys.argv獲取,可以參考上面
shortopts短主要參數組成的字符串:定義短主要參數,如果主要參數有值,需要在短主要參數后追加一個「:」符號
傳參使用方式:-n23
longopts長參數列表:定義長參數列表時,如果某個主要參數有值,需要在短主要參數后追加一個「=」符號
傳參使用方式:–port8080
這里以傳入數據庫連接主要參數為例(主要參數包含ip、用戶名、密碼、數據庫名稱)進行講解
from getopt import getopt import sys #獲取參數 #sys.argv[1:]:獲取除腳本文件名外的所有命令行參數 #opts:存有所有選項及其輸入值的元組列表 #args:去除有用的輸入以后剩余的部分 opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db=']) #獲取參數值 #短參數 #python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb #長參數 #python3 4_getopt.py--ip 127.0.0.1-u root-p 123456-d mysqldb ip_pre=[item[1]for item in opts if item[0]in('-i','--ip')] ip=ip_pre[0]if len(ip_pre)>0 else None print("參數ip:",ip) user_pre=[item[1]for item in opts if item[0]in('-u','--user')] user=user_pre[0]if len(user_pre)>0 else None print("參數user:",user) pwd_pre=[item[1]for item in opts if item[0]in('-p','--pwd')] pwd=pwd_pre[0]if len(pwd_pre)>0 else None print("參數pwd:",pwd) db_pre=[item[1]for item in opts if item[0]in('-d','--db')] db=db_pre[0]if len(db_pre)>0 else None print("參數db:",db) 在運行腳本時,我們可以利用「短參數」或「長參數」形式進行傳遞 #測試 #短參數 python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb #長參數 python3 4_getopt.py--ip 127.0.0.1--user root--pwd 123456--db mysqldb 4.click click作為第三方依賴庫,它為命令行工具封裝了大量的方法,可以非常方便實現命令行參數 項目地址 首先,我們需要安裝依賴庫click import click #安裝依賴 #pip3 install-U click click.command() click.option('--arg1',default='111',help='參數arg1,默認值為「111」') click.option('--arg2',type=int,help='參數arg2') click.option('--arg3',type=str,help='參數arg3') def start(arg1,arg2,arg3): """ 基于參數arg1、參數arg2、參數arg3運行項目 :param arg1: :param arg2: :param arg3: :return: """ print("參數arg1值為:",arg1) print("參數arg2值為:",arg2) print("參數arg3值為:",arg3) if __name__=='__main__': start() 然后,在主運行函數上通過裝飾器配置參數即可 比如,上面就定義了3個命令行參數arg1、arg2、arg3,并設置了參數的類型及默認值 最后,在運行腳本時只需要按參數設定傳遞對應的值即可 #不包含參數 xingag xingagdeMacBook-Pro args%python3 3_click.py 參數arg1值為:111 參數arg2值為:None 參數arg3值為:None #包含參數arg1 xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1 參數arg1值為:test1 參數arg2值為:None 參數arg3值為:None #包含參數arg1、arg2 #注意:arg2的參數類型為整形,傳入的參數必須能轉為整形,否則會報錯 xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222 參數arg1值為:test1 參數arg2值為:222 參數arg3值為:None #包含參數arg1、arg2、arg3 xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222--arg3 test3 參數arg1值為:test1 參數arg2值為:222 參數arg3值為:test3
匯總
上邊根據案例介紹了完成Pythonargv比較常見的4種方法:
對于部分簡易自購并且不那樣正規情景,個人感覺可以選擇用sys.argv控制模塊迅速搭建argv;但對某些主要參數多、以用戶為中心的宣布工作環境,提議運用argparse控制模塊或click依靠來建立argv
到這里這篇文章有關搭建Pythonargv的4種普遍模式的文章內容就介紹到這了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128715.html
在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數傳到某些自變量主要參數,使新項目應用更加靈便便捷。本文列舉了搭建Python查詢參數的4種普遍方法,所需要的可以了解一下 小伙伴們好,在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數傳到某些自變量主要參數,使新項目應用更加靈便便捷 本文我們將列舉出搭建Python查詢參數的4種普遍方法 分別是: 內...
摘要:前言協議和加密是前端可能會接觸到的加密所以我就將他們進行了一個歸納原理就是在加入層是安全的基礎協議是在基礎上加了協議使用端口是端口由網景公司開發并內置在瀏覽器中作用建立一個信息安全通道來保證數據傳輸的安全確認網站的真實性可以查看網站認證的真 前言 https,SSH協議和MD5加密是前端可能會接觸到的加密,所以我就將他們進行了一個歸納. 1.https 1.1原理 A.就是在http加...
摘要:前言協議和加密是前端可能會接觸到的加密所以我就將他們進行了一個歸納原理就是在加入層是安全的基礎協議是在基礎上加了協議使用端口是端口由網景公司開發并內置在瀏覽器中作用建立一個信息安全通道來保證數據傳輸的安全確認網站的真實性可以查看網站認證的真 前言 https,SSH協議和MD5加密是前端可能會接觸到的加密,所以我就將他們進行了一個歸納. 1.https 1.1原理 A.就是在http加...
摘要:本文的目的就是介紹如何使用搭建常用的布局,并保證布局具有合理的結構。所以,上面例子的正確結構如下這是我工作過程中見過的最多的一種錯誤,必須格外注意。 showImg(http://images2017.cnblogs.com/blog/999445/201802/999445-20180212224801781-748317715.jpg); 前言 Bootstrap 的成功不僅在于其...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02