1. 程式人生 > 其它 >python getopt模組

python getopt模組

getopt 是一個python模組, 處理命令列引數的,和sys.argv是一樣的功能, 這個功能和c語言處理命令列引數的功能和函式是一樣的, 例如你在命令列裡邊是這樣執行的: python test_getopy.py -i:127.0.0.1 -p:8888 或者python test_getopt.py --ip=127.0.01 --port=8888, getopt模組將幫你處理這些引數,下邊是一些常用的場景,希望能幫到你。
python 檔名字: test_getopt.py

python 檔案執行引數:python test_getopt.py -p:8888 -ip:127.0.0.1

test_getopt.py 程式碼:

#!/usr/bin/env python
 
import getopt
import sys
def main():
    """
    python test_getopt.py -i:127.0.0.1 -p:8888
    """
    options, args = getopt.getopt(sys.argv[1:], 'p:i:')
    
    for name, value in options:
        if name in ('-i'):
            # value is 127.0.0.1
            print ("value: {0}
".format(value)) if name in ('-p'): # value is 8888 print ("value: {0}".format(value)) if __name__ == "__main__": main()

如果你是這樣執行的程式碼:python test_getopt.py -i:127.0.0.1 -p:8888. 那麼在上邊的程式碼中-i的name值就是127.0.0.1 -p的name值就是8888,getopt.getopt(sys.argv[1:], 'p:i:') 第一個引數就是取檔名後邊的引數, 第二個引數‘p:i:’ 就是你命令列的引數是帶一個'-'符號的, ':' 符號是你的引數必須有值:例如:-i:127.0.0.1.

你也可以加入-h選項,當別人輸入python test_getopt.py -h 的時候會看到help的資訊。程式碼如下

#!/usr/bin/env python
 
import getopt
import sys
 
def usage():
    print ("==========")
    print ("Usage:")
    print (".   xxxxxxx")
    print (".   xxxxxxx")
    print ("==========")
 
def main():
    """
    python test_getopt.py -h
    """
    options, args = getopt.getopt(sys.argv[1:], 'h')
    
    for name, value in options:
        if name in ('-h'):
            usage()
 
if __name__ == "__main__":
    main()

上邊的程式碼例項都是引數是帶一個‘-’符號的, 你也可以使用帶‘--’符號的引數, 程式碼如下:

#!/usr/bin/env python
 
import getopt
import sys
 
def usage():
    print ("=======")
    print ("Usage:")
    print ("python test_getopt.py -I:127.0.0.1 -p:8888 66 88 or python test_getopt.py --ip=127.0.0.1 --port=8888 66 88")
    print ("=======")
 
def main():
    """
    getopt 模組的用法
    """
    options, args = getopt.getopt(sys.argv[1:], 'hp:i:', ['help', 'port=', 'ip='])
    
    for name, value in options:
        if name in ('-h', '--help'):
            usage()
        if name in ('-p', '--port'):
            print ('value: {0}'.format(value))
        if name in ('-i', '--ip'):
            print ('value: {0}'.format(value))
    for name in args:
        # name 的值就是 上邊引數例項裡邊的66和88
        print ("name: {0}".format(name))
    
 
if __name__ == "__main__":
    main()

轉載於https://blog.csdn.net/qq_34765864/article/details/81368754

__EOF__

作者: 隨風kali
本文連結: https://www.cnblogs.com/sfsec/p/15588621.html
版權宣告: 本部落格所有文章除特別宣告外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
聲援博主:如果您覺得文章對您有幫助,可以點選文章右下角推薦一下。您的鼓勵是博主的最大動力!