日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 参数传入sys.argv和getopt.getopt()的用法

發(fā)布時間:2025/3/15 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 参数传入sys.argv和getopt.getopt()的用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.sys.argv

Python中sys.argv是命令行參數(shù)從程序外部傳值的的一種途徑,它是一個列表,列表元素是我們想傳進去的的新參數(shù),所以可以用索引sys.argv[]來獲得想要的值。因為一個寫好的程序一般封裝好了,直接在編輯軟件里運行就行了,但是程序里面的所有參數(shù)我們必須在程序里寫好。但是當我們想從程序外部向程序傳遞我們想要用的參數(shù)時,在不改動原來程序的基礎上,我們可應通過命令行參數(shù),用dos界面運行程序,然后賦參,即向程序輸入新的參數(shù),使程序運行。這里可以用到sys.argv,看個例子;

該程序名字為hello.py

a=sys.argv

print(a)

print(type(a))

因為是程序外部傳參,所以用dos界面運行文件。按win+R,輸入cmd,打開dos界面,首先進入自己程序所在的文件夾,我的放在

然后,進入文件輸入:Python hello.py Hello,按回車。注意,以空格鍵來分隔輸入值

可以看見運行結(jié)果,['hello.py', 'Hello']就是sys.argv的值,類型是一個list,分析一下值的組成,sys.argv[0]表示程序文件名,這是個默認值,sys.argv[1]就是我們從外部輸入的命令行參數(shù)。需要從外部輸入更多參數(shù)時,輸入值之間用空格分隔,如下:

2.geopt.getopt()

Python中getopt.getopt()這個函數(shù)是為了從外部輸入不同的命令行選項時,對應執(zhí)行不同的功能。目前有短選項和長選項兩種格式。短選項格式為"-"加上單個字母選項;長選項為"--"加上一個單詞,同樣也是程序外部傳參。

語法:getopt.getopt(sys.argv,短選項,長選項)

返回值:函數(shù)返回兩個列表:opts和args。opts為分析出的格式信息。args為不屬于格式信息的剩余的命令行參數(shù)。opts是一個兩元組的列表。每個元素為:(選項串,附加參數(shù))。如果沒有附加參數(shù)則為空串''。

下面摘抄自其他博客:getopt在Python中的使用

在dos界面中書輸入的選項的寫法要求
  對于短格式,"-"號后面要緊跟一個選項字母。如果還有此選項的附加參數(shù),可以用空格分開,也可以不分開。長度任意,可以用引號。如以下是正確的:
-o
-oa
-obbbb
-o bbbb
-o "a b"
  對于長格式,"--"號后面要跟一個單詞。如果還有些選項的附加參數(shù),后面要緊跟"=",再加上參數(shù)。"="號前后不能有空格。如以下是正確的:
--help=file1
  而這些是不正確的:
-- help=file1
--help =file1
--help = file1
--help= file1

如何用getopt進行分析
  使用getopt模塊分析命令行參數(shù)大體上分為三個步驟:

1.導入getopt, sys模塊
2.分析命令行參數(shù)
3.處理結(jié)果

  第一步很簡單,只需要:
import getopt, sys

  第二步處理方法如下(以Python手冊上的例子為例):
try:
????opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])#長短選項的功能相同,可以隨意選擇使用
except getopt.GetoptError:
????# print help information and exit:

1.?處理所使用的函數(shù)叫getopt(),因為是直接使用import導入的getopt模塊,所以要加上限定getopt才可以。
2.?使用sys.argv[1:]過濾掉第一個參數(shù)(它是執(zhí)行腳本的名字,不應算作參數(shù)的一部分)。
3. 在函數(shù)里,使用短格式分析串"ho:"。當一個選項只是表示開關狀態(tài)時,即后面不帶附加參數(shù)時,在分析串中寫入選項字符。當選項后面是帶一個附加參數(shù)時,在分析串中寫入選項字符同時后面加一個":"號。所以"ho:"就表示"h"是一個開關選項;"o:"則表示后面應該帶一個參數(shù)。

函數(shù)中的'ho:'表示,在dos界面輸入短格式選項‘-h’,并且有附加參數(shù),短選項的附加參數(shù)寫法如上要求

4.?在函數(shù)里,使用長格式,用一個列表包含幾個長選項:["help", "output="]。長格式串也可以有開關狀態(tài),即后面不跟"="號。如果跟一個等號則表示后面還應有一個參數(shù)。這個長格式表示"help"是一個開關選項;"output="則表示后面應該帶一個參數(shù)。

函數(shù)中的["help", "output="],表示在dos界面輸入長格式串--help,不附加參數(shù)。--output,附加參數(shù)。
5.?調(diào)用getopt函數(shù)。函數(shù)返回兩個列表:opts和args。opts為分析出的格式信息。args為不屬于格式信息的剩余的命令行參數(shù)。opts是一個兩元組的列表。每個元素為:(選項串,附加參數(shù))。如果沒有附加參數(shù)則為空串''。
6.?整個過程使用異常來包含,這樣當分析出錯時,就可以打印出使用信息來通知用戶如何使用這個程序。

 如上面解釋的一個命令行例子為:
'-h -o file --help --output=out file1 file2'

  在分析完成后,opts應該是:
[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]

  而args則為:
['file1', 'file2']

第三步主要是對分析出的參數(shù)進行判斷是否存在,然后再進一步處理。主要的處理模式為:
for o, a in opts:
????if o in ("-h", "--help"):
????????usage()
????????sys.exit()
????if o in ("-o", "--output"):
????????output = a

  使用一個循環(huán),每次從opts中取出一個兩元組,賦給兩個變量。o保存選項參數(shù),a為附加參數(shù)。接著對取出的選項參數(shù)進行處理。(例子也采用手冊的例子)

?例子:文件名為sys_test2.py

import getopt
import sys

opts,args = getopt.getopt(sys.argv[1:],'-h-f:-v',['help','filename=','version'])
print(opts)
for opt_name,opt_value in opts:
? ? if opt_name in ('-h','--help'):
? ? ? ? print("[*] Help info")
? ? ? ? sys.exit()
? ? if opt_name in ('-v','--version'):
? ? ? ? print("[*] Version is 0.01 ")
? ? ? ? sys.exit()
? ? if opt_name in ('-f','--filename'):#當外部輸入'-f1'或者'--flilename=1'時,輸出為:[('--filename', '3')] \n [*] Filename is ?3
? ? ? ? fileName = opt_value
? ? ? ? print("[*] Filename is ",fileName)
? ? ? ? # do something
? ? ? ? sys.exit()

結(jié)果:?

尤其要講的是函數(shù)返回值

程序中opts,args = getopt.getopt(sys.argv[1:],'-h-f:-v',['help','filename=','version']) 輸入的短選項-h本身就是不附帶參數(shù)的,長選項--filename可以附加參數(shù),上例中附加值為3,可見這個返回值opts=[(('-h,''),('--filename','3'))] 其實這個函數(shù)就是為了根據(jù)相應的索引傳值,比如上面--filename對應傳的只就是3.

開源項目:

def help(verbose=False):

? ? print(( 'usage: %s [-c] [-o output] <tty-log-file> <tty-log-file>...' % \
? ? ? ? os.path.basename(sys.argv[0])))

? ? if verbose:
? ? ? ? print(' ?-c ? ? ? ? ? ? colorify the output based on what streams are being received')
? ? ? ? print(' ?-h ? ? ? ? ? ? display this help')
? ? ? ? print(' ?-o ? ? ? ? ? ? write to the specified output file')


if __name__ == '__main__':

? ? settings = {
? ? ? ? 'colorify': ? ? 0, ?#著色
? ? ? ? 'output': "" ? ? ? ?#輸出
? ? ? ? }

? ? try:
? ? ? ? optlist, args = getopt.getopt(sys.argv[1:], 'hco:' )
? ? except getopt.GetoptError as error:
? ? ? ? sys.stderr.write( '{}: {}\n'.format(sys.argv[0], error))
? ? ? ? help()
? ? ? ? sys.exit(1)

? ? for o, a in optlist:
? ? ? ? if o == '-h': help()
? ? ? ? if o == '-c': settings['colorify'] = True
? ? ? ? if o == '-o': settings['output'] = a

總結(jié)

以上是生活随笔為你收集整理的Python 参数传入sys.argv和getopt.getopt()的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲av永久无码精品国产精品 | 美女黄色免费网站 | 日韩av线上 | 二区三区偷拍浴室洗澡视频 | 久草资源在线观看 | 亚洲第三色| h片网站在线观看 | 爱乃なみ加勒比在线播放 | 靠逼视频网站 | 操一操| 亚洲中文字幕一区二区 | 奇米一区| 国产视频入口 | 色七七网站 | 北条麻妃一区二区三区在线观看 | 国产极品网站 | 日韩视频免费播放 | 香蕉视频黄版 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 久久久一 | 国产精品中文字幕在线 | 日韩毛片网站 | 97黄色网| 免费国产羞羞网站视频 | 日韩欧美综合视频 | 99久热| 一个色综合网站 | 国产黄色高清 | 综合久久99 | 曰本女人与公拘交酡 | 国产做爰全过程免费视频 | 欧洲视频一区二区三区 | 特大黑人娇小亚洲女mp4 | 亚洲激情二区 | 无码精品人妻一区二区三区漫画 | 国产精品久久在线 | 久久观看最新视频 | 国产精品久久欧美久久一区 | 黑人欧美一区二区三区 | 日韩成人高清视频在线观看 | 日韩性猛交ⅹxxx乱大交 | 黄色综合网站 | 51吃瓜网今日 | www.中文字幕在线观看 | 国产91精品久久久久久久网曝门 | 中文精品无码中文字幕无码专区 | xxx性欧美 | 精品视频成人 | 在线观看国产免费av | 久久久欧美精品 | 丁香婷婷六月 | 爱爱亚洲 | 国产一区二区网址 | 色狠| 黄色小说视频 | 韩国无码av片在线观看网站 | 真实的国产乱xxxx在线 | 午夜影院免费视频 | www.男女| 999久久久国产精品 韩国精品一区二区 | 99精彩视频 | 欧美做受喷浆在线观看 | 亚洲天堂中文在线 | 丁香七月激情 | 中国女人内谢69xxxx免费视频 | 麻豆精品视频免费观看 | 99视频在线播放 | 9久精品| 国产精品高潮呻吟视频 | 韩国伦理在线 | 超碰老司机 | 四虎库| 久热欧美 | 清冷学长被爆c躁到高潮失禁 | 调教一区二区三区 | 亚洲欧美va天堂人熟伦 | 噜噜啪啪 | 亚洲天堂伦理 | 亚洲精品一区二区三区中文字幕 | 亚洲欧美电影 | 一级看片| 成人入口| 蜜臀视频在线观看 | 在线播放你懂得 | 久久综合桃花网 | 欧美日韩在线影院 | 一区二区三区在线播放视频 | 国产久精品 | 一本一道久久a久久精品蜜桃 | 毛片大片| 五月天激情啪啪 | 99精品区 | 欧美aaaaaa | 男女一区| 性色av免费观看 | 777理伦三级做爰 | 国产午夜精品一区二区三区嫩草 | 日本黄色中文字幕 | 色视频一区二区 |