python 命令行參數


我們平常工作或學習中使用python大部分都是在寫腳本,那如何能使我們的腳本程序可以像Windows的cmd窗口和Linux的shell窗口一樣,進行任何操作都是通過命令行呢?

python中三個內建模塊用於處理命令行參數:

  sys

  getopt

  optparse

  argparse

 

一、sys命令行參數

sys模塊主要用於獲取和Python解釋器相關的信息,可在Python交互式解釋器中先導入sys模塊 import sys。通過內置函數dir()查詢到模塊內定義的所有名稱,並以一個字符串列表的形式返回。

                                 

 

 

sys.argv: 以列表的方式獲取運行 Python 程序的命令行參數。其中 ,sys.argv[0] 通常指該 Python程序本身,sys.argv[1]代表第一個參數,sys.argv[2]代表第二個參數,以此類推。

 

import sys

def start(argv):
    print('程序名:',argv[0])
    print('第一個參數:',argv[1])
    print('第二個參數:',argv[2])
    print('第三個參數:',argv[3])

if __name__ == '__main__':
    try:
        start(sys.argv[0:])
    except KeyboardInterrupt:
        print("interrupted by user, killing all threads...")

 

二、getopt命令行參數

getopt是對sys.argv獲取的命令行參數進行二次處理。在運行程序時,可能需要根據不同的條件,輸入不同的命令行選項來實現不同的功能,比如-u代表后面是用戶,-p代表后面是密碼。調用getopt.getopt()會返回兩個列表,第一個列表賦值給opts,第二個列表賦值給args。

  opts:是 (選項, 選項值) 的元組為一個元素的列表。如果沒有選項值為空字符串;

  args:存放沒用選項單參數的列表。不屬於格式信息的剩余的命令行參數;

 

import sys,getopt

opts, args = getopt.getopt(sys.argv[1:], "u:p:", ["file="])
print("opts結果為:",opts)
print("args結果為:",args)

參數解釋:使用 sys.argv[1:] 是為過濾第一個參數(第一個參數為Python程序本身) “u:p:” 為定義短格式選項(-)。這里的u和p為兩個選項。“u:p:” 后面有 “:” 必須有選項值。

     [“file=”] 為定義長格式選項(--)。這里的 “=” 和上面的短格式選項中的 “:” 一樣,后面必須有選項值。

 

使用命令: python3 ./getoptdemo.py -u user -p password --file=123.txt 123456

 

 

 

三、optparse命令行參數 

 

optparse模塊主要用來為腳本傳遞命令參數,采用預先定義好的選項來解析命令行參數,與getopt函數不同的是optparse可以自動生成幫助信息。

 

import optparse

usage = "python %prog -u/--user <target user> -p/--password <target password>"
parser = optparse.OptionParser(usage)
parser.add_option('-u', '--user',dest='User',type='string',help='target user', default='root')
parser.add_option('-p', '--password',dest='Pwd',type='string',help='target password')
options, args = parser.parse_args()

print("options為:",options) print("用戶名為", options.User) print("密碼為", options.Pwd)
print("args為:",args)

 

使用命令:python3 .\optparsedemo.py -h

     python3 .\optparsedemo.py -u user -p password

 

 

四、argparse命令行參數

 

argparse是optparse模塊的升級版,與optparse相比,argparse模塊使用更加簡單便捷。

 

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user', dest='User', type=str,default='root', help = 'target User')
parser.add_argument('-s', '--sex', dest='Sex', type=str,choices=['男','女'],default='男', help = 'target Sex')
parser.add_argument('-n', '--number', dest='Num',nargs=2,required=True, type=int, help = 'target Two Numbers')

print(parser.parse_args())

 

 

使用命令:python3 .\argparsedemo.py -h

     python3 .\argparsedemo.py -n 12 15 

 

 

argparse.ArgumentParser().add_argument 參數:

  可以設置多個選項字符串,比如上面的 ‘-u’, ‘--user’ 這兩個,用的時候任選其一;

  type用於檢測命令行輸入參數的數據類型是否符合要求,有 string、int、float等類型;

  dest=用於定義選項值存放的位置,作為后面的第一個字典(options)的鍵,值為命令輸入的參數;

  help用於定義幫助信息;

  default設置默認值;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM