欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中三種命令行參數(shù)利用方式詳解

 更新時(shí)間:2023年12月26日 09:18:17   作者:ju_ju_bone  
Python的命令行參數(shù),提供了很多有用的功能,可以方便調(diào)試和運(yùn)行,這篇文章主要給大家介紹了關(guān)于Python中三種命令行參數(shù)利用方式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、sys.argv介紹

1.使用方法

我們可以通過導(dǎo)入 sys 模塊來使用 sys.argv,這個(gè)模塊提供了一個(gè)名為 argv 的列表,保存了命令行中傳遞的所有參數(shù)。在代碼中可以通過 sys.argv[i] 來獲取第 i 個(gè)參數(shù)的值,其中 i 從 0 開始計(jì)數(shù),也就是說 sys.argv[0] 存儲(chǔ)的是 Python 腳本本身的名稱。

2.案例1

print("程序名:",sys.argv[0])
print("第一個(gè)參數(shù):",sys.argv[1])
print("第二個(gè)參數(shù):",sys.argv[2])
print("第三個(gè)參數(shù):",sys.argv[3])

執(zhí)行結(jié)果:

3.案例2——讀取文件內(nèi)容

假設(shè)我們有一個(gè)程序需要讀取一個(gè)文件名,并且對(duì)文件進(jìn)行操作,這時(shí)候我們可以使用 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í)行結(jié)果:

二、getopt

1.案例1

使用 sys.arg[1:]是為過濾第一個(gè)參數(shù)(第一個(gè)參數(shù)為Pylhon程序本身)

1、“-u:-p:” 為定義短格式選項(xiàng)(-)。這里的p和u為兩個(gè)選項(xiàng),u后面有“:”必須有選項(xiàng)值。

2、[“file="] 為定義長(zhǎng)格式選項(xiàng)(–)。這里的“=”和上面的短格式選項(xiàng)中的“:”一樣,后面必須有選項(xiàng)值。

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

1、opts:是(選項(xiàng),選項(xiàng)值)的元組為一個(gè)元素的列表。如果沒有選項(xiàng)值為空字符串

2、args: 存放沒用選項(xiàng)單參數(shù)的列表。不屬于格式信息的剩余的命令行參數(shù):

import sys
import getopt

opts,argv = getopt.getopt(sys.argv[1:],'-u:-p:',["file="])
print("opts輸出結(jié)果為:",opts)
print("args輸出結(jié)果為:",argv)

2.案例2——讀取文件內(nèi)容

簡(jiǎn)單實(shí)例:

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:])

運(yùn)行結(jié)果:

三、optparse

案例1

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

type=: 表示輸入命令行參數(shù)的值的類型,默認(rèn)為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——讀取文件內(nèi)容

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=: 表示命令參數(shù)的默認(rèn)值;
  • Metavar=: 顯示到幫助文檔中用來提示用戶輸入期望的命令參數(shù);
  • dest=:指定參數(shù)在options對(duì)象中成員的名稱,如果沒有指定dest參數(shù),將用命令行參數(shù)名來對(duì)options對(duì)象的值進(jìn)行存取。
  • help=: 顯示在幫助文檔中的信息;

四、argparse

argparse是optparse的升級(jí)版本,與optparse相比,argparse使用更加簡(jiǎn)單

案例1

import argparse

'''
argparse.ArgumentParser().add_argument參數(shù):
1、可以設(shè)置多個(gè)選項(xiàng)字符串,比如上面的'-u','--user'這兩個(gè),用的時(shí)候任選其一;
2、type用于檢測(cè)命令行輸入?yún)?shù)的數(shù)據(jù)類型是否符合要去,有string、int、float等類型;
3、dest=用于定義選項(xiàng)存放的位置,作為后面的第一個(gè)字典(options)的鍵,值為命令行輸入的參數(shù);
4、help用于定義幫助信息;
5、default設(shè)置默認(rèn)值
'''
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——讀取文件內(nèi)容

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()

總結(jié)

argparse比較常用

到此這篇關(guān)于Python中三種命令行參數(shù)利用方式詳解的文章就介紹到這了,更多相關(guān)Python命令行參數(shù)利用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論