Python中三種命令行參數利用方式詳解
一、sys.argv介紹
1.使用方法
我們可以通過導入 sys 模塊來使用 sys.argv,這個模塊提供了一個名為 argv 的列表,保存了命令行中傳遞的所有參數。在代碼中可以通過 sys.argv[i] 來獲取第 i 個參數的值,其中 i 從 0 開始計數,也就是說 sys.argv[0] 存儲的是 Python 腳本本身的名稱。
2.案例1
print("程序名:",sys.argv[0])
print("第一個參數:",sys.argv[1])
print("第二個參數:",sys.argv[2])
print("第三個參數:",sys.argv[3])
執(zhí)行結果:

3.案例2——讀取文件內容
假設我們有一個程序需要讀取一個文件名,并且對文件進行操作,這時候我們可以使用 sys.argv 來避免在代碼中寫死文件名。
if len(sys.argv) < 2:
print("usafe: python sysArgv.py filename")
sys.exit()
filename = sys.argv[1]
try:
with open(filename,'r') as f:
print(f.read())
except:
print("文件不存在")
sys.exit()執(zhí)行結果:

二、getopt
1.案例1
使用 sys.arg[1:]是為過濾第一個參數(第一個參數為Pylhon程序本身)
1、“-u:-p:” 為定義短格式選項(-)。這里的p和u為兩個選項,u后面有“:”必須有選項值。
2、[“file="] 為定義長格式選項(–)。這里的“=”和上面的短格式選項中的“:”一樣,后面必須有選項值。
getopt是對sys.argv獲取的命令行參數進行二次處理。在運行程序時,可能需要根據不同的條件,輸入不同的命令行選項來實現不同的功能,比如-u代表后面是用戶,-p代表后面是密碼。調用getopt.getopt()會返回兩個列表,第一個列表賦值給opts,第二個列表賦值給args:
1、opts:是(選項,選項值)的元組為一個元素的列表。如果沒有選項值為空字符串
2、args: 存放沒用選項單參數的列表。不屬于格式信息的剩余的命令行參數:
import sys
import getopt
opts,argv = getopt.getopt(sys.argv[1:],'-u:-p:',["file="])
print("opts輸出結果為:",opts)
print("args輸出結果為:",argv)

2.案例2——讀取文件內容
簡單實例:
import sys
import getopt
def usage():
print('-h: --help 幫助;')
print('--file=文件名')
def read(filename):
try:
with open(filename, 'r') as f:
print(f.read())
except:
print("文件不存在")
sys.exit()
def start(argv):
file = ""
if len(argv)<1:
print("-h 獲取幫助信息")
sys.exit()
opts, argvs = getopt.getopt(argv, '-h', ["file="])
for opt,arg in opts:
if opt == "-h":
usage()
elif opt == "--file":
read(arg)
if __name__ == '__main__':
start(sys.argv[1:])運行結果:

三、optparse
案例1
optparse模塊主要用來為腳本傳遞命令參數,采用預先定義好的選項來解析命令行參數,與getopt函數不同的是optparse可以自動生成幫助信息。
type=: 表示輸入命令行參數的值的類型,默認為string,可以指定為string, int, choice, float,complex其中一種;
import optparse
def start():
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.User)
print("密碼為", options.Pwd)
if __name__ == '__main__':
try:
start()
except KeyboardInterrupt:
print("interrupted by user, killing all threads...")
案例2——讀取文件內容
import optparse
import sys
def read(filename):
try:
with open(filename, 'r') as f:
print(f.read())
except:
print("文件不存在")
sys.exit()
def start():
usage = "python %prog -u/--user <target user> -p/--password <target password> -f/--file <target file>"
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')
parser.add_option('-f','--file', dest='Filename',type='string',help='write report to FILE', metavar='FILE',default='123.txt')
print(parser.parse_args())
options, args = parser.parse_args()
print("用戶名為", options.User)
print("密碼為", options.Pwd)
print("文件為",options.Filename)
# for option,arg in parser.parse_args():
# if option.Filename == '-f':
read(options.Filename)
if __name__ == '__main__':
try:
start()
except KeyboardInterrupt:
print("interrupted by user, killing all threads...")
- default=: 表示命令參數的默認值;
- Metavar=: 顯示到幫助文檔中用來提示用戶輸入期望的命令參數;
- dest=:指定參數在options對象中成員的名稱,如果沒有指定dest參數,將用命令行參數名來對options對象的值進行存取。
- help=: 顯示在幫助文檔中的信息;
四、argparse
argparse是optparse的升級版本,與optparse相比,argparse使用更加簡單
案例1
import argparse
'''
argparse.ArgumentParser().add_argument參數:
1、可以設置多個選項字符串,比如上面的'-u','--user'這兩個,用的時候任選其一;
2、type用于檢測命令行輸入參數的數據類型是否符合要去,有string、int、float等類型;
3、dest=用于定義選項存放的位置,作為后面的第一個字典(options)的鍵,值為命令行輸入的參數;
4、help用于定義幫助信息;
5、default設置默認值
'''
parse = argparse.ArgumentParser()
parse.add_argument('-u', '--user', dest='User', type=str, help='target user', default='root')
parse.add_argument('-s','--sex',dest='Sex',type=str,choices=['男','女'],default='男',help='target sex')
parse.add_argument('-n','--number',dest='Num',required=True,type=int,default='target two number')
print(parse.parse_args().User,parse.parse_args().Sex,parse.parse_args().Num)

案例2——讀取文件內容
import sys,argparse
def read(filename):
try:
with open(filename, 'r') as f:
print(f.read())
except:
print("文件不存在")
sys.exit()
def start():
parse = argparse.ArgumentParser()
parse.add_argument('-u', '--user', dest='User', type=str, help='target user', default='root')
parse.add_argument('-s','--sex',dest='Sex',type=str,choices=['男','女'],default='男',help='target sex')
parse.add_argument('-n','--number',dest='Num',required=True,nargs=1,type=int,default='target two number')
parse.add_argument('-f','--file',dest='File',type=str,default='123.txt')
print(parse.parse_args().User,parse.parse_args().Sex,parse.parse_args().Num,parse.parse_args().File)
read(parse.parse_args().File)
if __name__ == '__main__':
start()

總結
argparse比較常用
到此這篇關于Python中三種命令行參數利用方式詳解的文章就介紹到這了,更多相關Python命令行參數利用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python真題案例之小學算術?階乘精確值?孿生素數?6174問題詳解
這篇文章主要介紹了python實操案例練習,本文給大家分享的案例中主要任務有小學生算術、階乘的精確值、孿生素數、6174問題,需要的小伙伴可以參考一下2022-03-03
使用Pytorch構建第一個神經網絡模型?附案例實戰(zhàn)
這篇文章主要介紹了用Pytorch構建第一個神經網絡模型(附案例實戰(zhàn)),本文通過實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03

