目錄
- 前言
- 一、流文本處理
- 二、argparse 模塊
- 三、argv 列表
- 四、argv + argparse
前言
我們寫的 Python 腳本需要修改參數,當我們將腳步上傳到服務器或者給不會編程的人用時,會比較不方便,如果直接可以在外部指定參數,會非常方便,今天介紹的就是 Python 外部指定參數的幾種方法。
一、流文本處理
這種方法適用于修改一下文件中的內容,配合 Linux 命令非常方便,舉一個例子,我們需要從一個 binlog 文件中找到該里面最大的事物,我們要配合 mysqldump 來做:
mysqlbinlog -v --base64-output=decode-row ./mysql-bin.000001 | python check_big_event.py
此時我們需要給腳步的參數就只有 binlog 文件路徑,那就可以直接使用 sys 將 binlog 文件以流式(一行一行)傳遞給腳步,非常簡單就可以實現,下方是示例腳本👇

二、argparse 模塊
Python 自帶的接收外部參數的模塊,用好以后也是非常的猴賽雷。下面是一個 MySQL 自動化部署腳步,需要指定的參數有三個,我們均可以使用 --參數名
方式來指定。
python MySQL_install.py --datadir=/data/mysql_db --basedir=/usr/local --path=mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
下方是使用實例,當不指定參數時,會打印出 help 方法。

下方是一個示例格式:

使用這種方法傳遞參數,我們就可以運行腳本時:
python args.py --path=xxx --log=xxx
優點非常多,指定參數沒有數量限制,可以設置默認,兼容性 和 擴展性非常好,生產推薦使用該方法。
三、argv 列表
這種方法非常簡單直接,不需要指定參數名,直接使用下標來取參數,請看下方演示:

運行結果:

指定參數時,使用空格隔開就可以,缺點是我們必須安裝腳步順序指定,如果腳本只有一個參數或者參數意義相同,可以用這種方法,參數較多不建議使用。
四、argv + argparse
argv + argparse 好處就是可以讓腳本得到非常好的封裝,適用于腳步參數比較多的時候。下方是一個演示:
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腳本文件外部傳遞參數的處理方法的詳細內容,更多關于Python腳本外部傳遞參數的資料請關注腳本之家其它相關文章!
您可能感興趣的文章:- Jmeter調用Python腳本實現參數互相傳遞的實現
- java 直接調用python腳本,并傳遞參數代碼實例
- python 類之間的參數傳遞方式
- Python進程,多進程,獲取進程id,給子進程傳遞參數操作示例
- Python傳遞參數的多種方式(小結)