Python腳本文件外部傳遞參數(shù)的處理方法
前言
我們寫的 Python 腳本需要修改參數(shù),當(dāng)我們將腳步上傳到服務(wù)器或者給不會(huì)編程的人用時(shí),會(huì)比較不方便,如果直接可以在外部指定參數(shù),會(huì)非常方便,今天介紹的就是 Python 外部指定參數(shù)的幾種方法。
一、流文本處理
這種方法適用于修改一下文件中的內(nèi)容,配合 Linux 命令非常方便,舉一個(gè)例子,我們需要從一個(gè) binlog 文件中找到該里面最大的事物,我們要配合 mysqldump 來做:
mysqlbinlog -v --base64-output=decode-row ./mysql-bin.000001 | python check_big_event.py
此時(shí)我們需要給腳步的參數(shù)就只有 binlog 文件路徑,那就可以直接使用 sys 將 binlog 文件以流式(一行一行)傳遞給腳步,非常簡(jiǎn)單就可以實(shí)現(xiàn),下方是示例腳本👇
二、argparse 模塊
Python 自帶的接收外部參數(shù)的模塊,用好以后也是非常的猴賽雷。下面是一個(gè) MySQL 自動(dòng)化部署腳步,需要指定的參數(shù)有三個(gè),我們均可以使用 --參數(shù)名
方式來指定。
python MySQL_install.py --datadir=/data/mysql_db --basedir=/usr/local --path=mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
下方是使用實(shí)例,當(dāng)不指定參數(shù)時(shí),會(huì)打印出 help 方法。
下方是一個(gè)示例格式:
使用這種方法傳遞參數(shù),我們就可以運(yùn)行腳本時(shí):
python args.py --path=xxx --log=xxx
優(yōu)點(diǎn)非常多,指定參數(shù)沒有數(shù)量限制,可以設(shè)置默認(rèn),兼容性 和 擴(kuò)展性非常好,生產(chǎn)推薦使用該方法。
三、argv 列表
這種方法非常簡(jiǎn)單直接,不需要指定參數(shù)名,直接使用下標(biāo)來取參數(shù),請(qǐng)看下方演示:
運(yùn)行結(jié)果:
指定參數(shù)時(shí),使用空格隔開就可以,缺點(diǎn)是我們必須安裝腳步順序指定,如果腳本只有一個(gè)參數(shù)或者參數(shù)意義相同,可以用這種方法,參數(shù)較多不建議使用。
四、argv + argparse
argv + argparse 好處就是可以讓腳本得到非常好的封裝,適用于腳步參數(shù)比較多的時(shí)候。下方是一個(gè)演示:
import sys import argparse def parse_args(): """parse args for test""" parser = argparse.ArgumentParser(add_help=False) connect_setting = parser.add_argument_group('connect setting') connect_setting.add_argument('-h', '--host', dest='host', type=str, help='Host the MySQL database server located', default='127.0.0.1') connect_setting.add_argument('-u', '--user', dest='user', type=str, help='MySQL Username to log in as', default='root') connect_setting.add_argument('-p', '--password', dest='password', type=str, nargs='*', help='MySQL Password to use', default='') connect_setting.add_argument('-P', '--port', dest='port', type=int, help='MySQL port to use', default=3306) return parser def command_line_args(args): need_print_help = False if args else True parser = parse_args() args = parser.parse_args(args) if args.help or need_print_help: parser.print_help() sys.exit(1) return args if __name__ == '__main__': args = command_line_args(sys.argv[1:]) print(args.host)
以上就是Python腳本文件外部傳遞參數(shù)的處理方法的詳細(xì)內(nèi)容,更多關(guān)于Python腳本外部傳遞參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中查看變量的類型內(nèi)存地址所占字節(jié)的大小
這篇文章主要介紹了Python中查看變量的類型,內(nèi)存地址,所占字節(jié)的大小,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06python如何實(shí)現(xiàn)異步調(diào)用函數(shù)執(zhí)行
這篇文章主要介紹了python如何實(shí)現(xiàn)異步調(diào)用函數(shù)執(zhí)行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python實(shí)現(xiàn)自動(dòng)生成請(qǐng)假條
這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)用Python來批量生成請(qǐng)假條,這回既學(xué)了東西又做了事情,兩不誤!感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用
在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),本文將從入門到精通,全面介紹hasattr()、getattr()和setattr()函數(shù)的用法和相關(guān)知識(shí)點(diǎn),需要的可以了解下2023-08-08linux環(huán)境下安裝python虛擬環(huán)境及注意事項(xiàng)
這篇文章主要介紹了linux環(huán)境下安裝python虛擬環(huán)境,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01django 實(shí)現(xiàn)后臺(tái)從富文本提取純文本
這篇文章主要介紹了django 實(shí)現(xiàn)后臺(tái)從富文本提取純文本,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07