成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

搭建Pythonargv的4種比較常見方式方法

89542767 / 475人閱讀

  此篇文章主要是闡述了搭建Pythonargv的4種比較常見方式方法,文章內(nèi)容緊扣主題進(jìn)行詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,務(wù)必的朋友可以學(xué)習(xí)一下。


  序言


  小伙伴們好,在平時(shí)的撰寫Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)argv傳到某些自變量主要參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷。


  分別是:


  內(nèi)嵌sys.argv控制模塊


  內(nèi)嵌argparse控制模塊


  內(nèi)嵌getopt模塊


  第三方平臺(tái)依賴庫(kù)click


  1.sys.argv
  搭建argv非常簡(jiǎn)單、比較常見的方法是運(yùn)用內(nèi)嵌的「sys.argv」控制模塊。
  它是把主要參數(shù)以一種規(guī)范有序目錄傳到,因而在使用過(guò)程中傳參次序務(wù)必固定不動(dòng)。
  因而,這種方法適用主要參數(shù)數(shù)量少且情景固定工程中。
  import sys
  if __name__=='__main__':
  #獲取參數(shù)列表
  #注意:sys.argv[0]代表第一個(gè)參數(shù),即:腳本名稱「1_sys.argv.py」
  #其他參數(shù)列表
  args=sys.argv[1:]
  #參數(shù)個(gè)數(shù)
  args_length=len(sys.argv)if sys.argv else 0
  print("排除運(yùn)行主文件參數(shù),其他參數(shù)列表為:",args)
  print("參數(shù)總數(shù):",args_length)
  #使用
  #python3 1_sys.argv.py arg1 arg2
  #排除運(yùn)行主文件參數(shù),其他參數(shù)列表為:[arg1,arg1]
  #參數(shù)總數(shù):3


  需要注意的是,在腳本中通過(guò)「sys.argv」獲取的參數(shù)列表中,第一個(gè)參數(shù)代表腳本主文件名稱


  2.argparse


  內(nèi)置的argparse模塊可以非常輕松地編寫出友好的命令行參數(shù)腳本,并且它能自動(dòng)生成幫助使用手冊(cè),在用戶給程序傳入無(wú)效參數(shù)時(shí)能拋出清晰的錯(cuò)誤信息


  官方文檔:


  使用它構(gòu)建命令行參數(shù)包含3個(gè)步驟


  構(gòu)建參數(shù)解析對(duì)象添加參數(shù)添加參數(shù)解析參數(shù)


  構(gòu)建命令行參數(shù)解析對(duì)象


  import argparse
  ...
  #構(gòu)建一個(gè)命令行參數(shù)解析對(duì)象
  parser=argparse.ArgumentParser(description='命令行參數(shù)')
  ...
  添加命令行參數(shù):
  需要指出的是,--arg1用于指定參數(shù)名稱,-a1代表dest目標(biāo)變量值(簡(jiǎn)寫)
  ...
  #設(shè)置3個(gè)參數(shù)
  #參數(shù)1:arg1,整型,非必須傳入?yún)?shù)
  #參數(shù)2:arg2,字符串,非必須傳入?yún)?shù),包含默認(rèn)值「xag」
  #參數(shù)3:arg3,字符串類型,必須傳入的參數(shù)
  parser.add_argument('--arg1','-a1',type=int,help='參數(shù)1,非必須參數(shù)')
  parser.add_argument('--arg2','-a2',type=str,help='參數(shù)2,非必須參數(shù),包含默認(rèn)值',default='xag')
  parser.add_argument('--arg3','-a3',type=str,help='參數(shù)3,必須參數(shù)',required=True)
  ...
  解析出參數(shù)值:
  ...
  #解析參數(shù),獲取所有的命令行參數(shù)(Namespace),然后轉(zhuǎn)為字典
  args=vars(parser.parse_args())
  #獲取所有參數(shù)
  print("所有命令行參數(shù)為:")
  for key in args:
  print(f"命令行參數(shù)名:{key},參數(shù)值:{args[key]}")
  ...
  使用的時(shí)候,我們就可以通過(guò)「-h/--help」命令參數(shù)查看幫助文檔
  #查看命令行參數(shù)幫助文檔
  python3 2_argparse.py--help
  #或
  python3 2_argparse.py-h
  上面添加的3個(gè)參數(shù),參數(shù)arg1、arg2非必須傳值,arg3必須傳值,另外參數(shù)arg2指定了默認(rèn)值
  #參數(shù)arg3必須,參數(shù)arg1和參數(shù)arg2非必須,其中參數(shù)arg2設(shè)置了默認(rèn)值
  #傳入?yún)?shù)arg3
  #python3 2_argparse.py--arg3 123
  #python3 2_argparse.py-a3 123
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a3 123
  所有命令行參數(shù)為:
  命令行參數(shù)名:arg1,參數(shù)值:None
  命令行參數(shù)名:arg2,參數(shù)值:xag
  命令行參數(shù)名:arg3,參數(shù)值:123
  #傳入?yún)?shù)arg1、arg3
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a3 123
  所有命令行參數(shù)為:
  命令行參數(shù)名:arg1,參數(shù)值:111
  命令行參數(shù)名:arg2,參數(shù)值:xag
  命令行參數(shù)名:arg3,參數(shù)值:123
  #傳入?yún)?shù)arg1、arg2、arg3
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a2 222-a3 123
  所有命令行參數(shù)為:
  命令行參數(shù)名:arg1,參數(shù)值:111
  命令行參數(shù)名:arg2,參數(shù)值:222
  命令行參數(shù)名:arg3,參數(shù)值:123

  3.getopt


  getopt是Python中的內(nèi)嵌標(biāo)準(zhǔn)模塊,需要結(jié)合sys.argv控制模塊,立即分析腳本運(yùn)行時(shí)主要參數(shù)


  使用格式:getopt(args,shortopts,longopts=[])


  其中


  args:參數(shù)列表,可以通過(guò)sys.argv獲取,可以參考上面


  shortopts短主要參數(shù)組成的字符串:定義短主要參數(shù),如果主要參數(shù)有值,需要在短主要參數(shù)后追加一個(gè)「:」符號(hào)


  傳參使用方式:-n23


  longopts長(zhǎng)參數(shù)列表:定義長(zhǎng)參數(shù)列表時(shí),如果某個(gè)主要參數(shù)有值,需要在短主要參數(shù)后追加一個(gè)「=」符號(hào)


  傳參使用方式:–port8080


  這里以傳入數(shù)據(jù)庫(kù)連接主要參數(shù)為例(主要參數(shù)包含ip、用戶名、密碼、數(shù)據(jù)庫(kù)名稱)進(jìn)行講解


  from getopt import getopt
  import sys
  #獲取參數(shù)
  #sys.argv[1:]:獲取除腳本文件名外的所有命令行參數(shù)
  #opts:存有所有選項(xiàng)及其輸入值的元組列表
  #args:去除有用的輸入以后剩余的部分
  opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db='])
  #獲取參數(shù)值
  #短參數(shù)
  #python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb
  #長(zhǎng)參數(shù)
  #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("參數(shù)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("參數(shù)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("參數(shù)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("參數(shù)db:",db)
  在運(yùn)行腳本時(shí),我們可以利用「短參數(shù)」或「長(zhǎng)參數(shù)」形式進(jìn)行傳遞
  #測(cè)試
  #短參數(shù)
  python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb
  #長(zhǎng)參數(shù)
  python3 4_getopt.py--ip 127.0.0.1--user root--pwd 123456--db mysqldb
  4.click
  click作為第三方依賴庫(kù),它為命令行工具封裝了大量的方法,可以非常方便實(shí)現(xiàn)命令行參數(shù)
  項(xiàng)目地址
  首先,我們需要安裝依賴庫(kù)click
  import click
  #安裝依賴
  #pip3 install-U click
  click.command()
  click.option('--arg1',default='111',help='參數(shù)arg1,默認(rèn)值為「111」')
  click.option('--arg2',type=int,help='參數(shù)arg2')
  click.option('--arg3',type=str,help='參數(shù)arg3')
  def start(arg1,arg2,arg3):
  """
  基于參數(shù)arg1、參數(shù)arg2、參數(shù)arg3運(yùn)行項(xiàng)目
  :param arg1:
  :param arg2:
  :param arg3:
  :return:
  """
  print("參數(shù)arg1值為:",arg1)
  print("參數(shù)arg2值為:",arg2)
  print("參數(shù)arg3值為:",arg3)
  if __name__=='__main__':
  start()
  然后,在主運(yùn)行函數(shù)上通過(guò)裝飾器配置參數(shù)即可
  比如,上面就定義了3個(gè)命令行參數(shù)arg1、arg2、arg3,并設(shè)置了參數(shù)的類型及默認(rèn)值
  最后,在運(yùn)行腳本時(shí)只需要按參數(shù)設(shè)定傳遞對(duì)應(yīng)的值即可
  #不包含參數(shù)
  xingag xingagdeMacBook-Pro args%python3 3_click.py
  參數(shù)arg1值為:111
  參數(shù)arg2值為:None
  參數(shù)arg3值為:None
  #包含參數(shù)arg1
  xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1
  參數(shù)arg1值為:test1
  參數(shù)arg2值為:None
  參數(shù)arg3值為:None
  #包含參數(shù)arg1、arg2
  #注意:arg2的參數(shù)類型為整形,傳入的參數(shù)必須能轉(zhuǎn)為整形,否則會(huì)報(bào)錯(cuò)
  xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222
  參數(shù)arg1值為:test1
  參數(shù)arg2值為:222
  參數(shù)arg3值為:None
  #包含參數(shù)arg1、arg2、arg3
  xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222--arg3 test3
  參數(shù)arg1值為:test1
  參數(shù)arg2值為:222
  參數(shù)arg3值為:test3


  匯總


  上邊根據(jù)案例介紹了完成Pythonargv比較常見的4種方法:


  對(duì)于部分簡(jiǎn)易自購(gòu)并且不那樣正規(guī)情景,個(gè)人感覺(jué)可以選擇用sys.argv控制模塊迅速搭建argv;但對(duì)某些主要參數(shù)多、以用戶為中心的宣布工作環(huán)境,提議運(yùn)用argparse控制模塊或click依靠來(lái)建立argv


  到這里這篇文章有關(guān)搭建Pythonargv的4種普遍模式的文章內(nèi)容就介紹到這了

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128715.html

相關(guān)文章

  • Python查詢參數(shù)標(biāo)準(zhǔn)化4方法詳細(xì)說(shuō)明

      在平時(shí)的撰寫Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢參數(shù)傳到某些自變量主要參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷。本文列舉了搭建Python查詢參數(shù)的4種普遍方法,所需要的可以了解一下  小伙伴們好,在平時(shí)的撰寫Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢參數(shù)傳到某些自變量主要參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷  本文我們將列舉出搭建Python查詢參數(shù)的4種普遍方法  分別是:  內(nèi)...

    89542767 評(píng)論0 收藏0
  • 常見https,SSH協(xié)議和MD5加密方式分析

    摘要:前言協(xié)議和加密是前端可能會(huì)接觸到的加密所以我就將他們進(jìn)行了一個(gè)歸納原理就是在加入層是安全的基礎(chǔ)協(xié)議是在基礎(chǔ)上加了協(xié)議使用端口是端口由網(wǎng)景公司開發(fā)并內(nèi)置在瀏覽器中作用建立一個(gè)信息安全通道來(lái)保證數(shù)據(jù)傳輸?shù)陌踩_認(rèn)網(wǎng)站的真實(shí)性可以查看網(wǎng)站認(rèn)證的真 前言 https,SSH協(xié)議和MD5加密是前端可能會(huì)接觸到的加密,所以我就將他們進(jìn)行了一個(gè)歸納. 1.https 1.1原理 A.就是在http加...

    3fuyu 評(píng)論0 收藏0
  • 常見https,SSH協(xié)議和MD5加密方式分析

    摘要:前言協(xié)議和加密是前端可能會(huì)接觸到的加密所以我就將他們進(jìn)行了一個(gè)歸納原理就是在加入層是安全的基礎(chǔ)協(xié)議是在基礎(chǔ)上加了協(xié)議使用端口是端口由網(wǎng)景公司開發(fā)并內(nèi)置在瀏覽器中作用建立一個(gè)信息安全通道來(lái)保證數(shù)據(jù)傳輸?shù)陌踩_認(rèn)網(wǎng)站的真實(shí)性可以查看網(wǎng)站認(rèn)證的真 前言 https,SSH協(xié)議和MD5加密是前端可能會(huì)接觸到的加密,所以我就將他們進(jìn)行了一個(gè)歸納. 1.https 1.1原理 A.就是在http加...

    Alfred 評(píng)論0 收藏0
  • 如何使用 Bootstrap 搭建更合理 HTML 結(jié)構(gòu)

    摘要:本文的目的就是介紹如何使用搭建常用的布局,并保證布局具有合理的結(jié)構(gòu)。所以,上面例子的正確結(jié)構(gòu)如下這是我工作過(guò)程中見過(guò)的最多的一種錯(cuò)誤,必須格外注意。 showImg(http://images2017.cnblogs.com/blog/999445/201802/999445-20180212224801781-748317715.jpg); 前言 Bootstrap 的成功不僅在于其...

    gclove 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<