首先說引數解析,需要涉及optparse模組知識;
首先你必須匯入該類,並建立乙個optionparser物件,然後再使用parser.add_option(...)來定義命令列引數,及其幫助文件。
每個命令列引數就是由引數名字串和引數屬性組成的;
基本格式:
op.add_option("-s","--server",dest="server")
當你將所有的命令列引數都定義好了的時候,我們需要呼叫parse_args()方法來解析add_option()函式依次傳入的引數:
options,args = parser.parser_args()
options 是乙個列印出來呈現是字典,但本質它是乙個物件,其key字典中的關鍵字可能會是是我們所有的add_option()函式中的dest引數值,其對應的value值,是命令列輸入的對應的add_option()函式的引數值;
命令分發:
使用hasattr(),來確認輸入命令是否是例項有的屬性,若是true就啟動命令對應的函式
下面主要說一下ftp的命令執行的整體結構:if hasattr(self,cmd):
func=getattr(self,cmd)
func()
bin--ftp_server.py裡的**:
core--main.py裡面的**:#-*-conding:utf-8 -*-
import os,sys
dirname=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
from core import main
if __name__ == '__main__':
'''啟動core目錄下的main檔案裡的ar**handler類
'''main.ar**handler()
core--server檔案中的**(簡單舉例):#-*-coding:utf-8 -*-
import os,sys
import optparse
import socketserver
dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
from conf import settings
from core import server
class ar**handler():
def __init__(self):
#首先你必須匯入該類,並建立乙個optionparser物件,然後再使用parser.add_option(...)
#來定義命令列引數
self.op=optparse.optionparser()
'''這裡定義命令列引數,之所以將其注釋掉,是因為,服務配置的引數一般放在conf配置檔案中的settings中
self.op.add_option("-s","--server",dest="server")
self.op.add_option("-p","--port",dest="port")
'''#下面這一句,使用parse_args(),來解析傳入的引數
options,args=self.op.parse_args()
# print(options)
# print(args)
self.verify_args(options,args)
def verify_args(self,options,args):
'''命令分發'''
#根據上面引數解析的**,args中的第乙個肯定是cmd命令
cmd=args[0]
#判斷服務端是否有該命令匹配的屬性功能,有則呼叫函式,執行功能
if hasattr(self,cmd):
func=getattr(self,cmd)
func()
def start(self):
'''start方法,簡單舉例,若服務端接收的資訊中解析到start引數,就會根據命令分發,啟動該函式'''
print("the server is working")
s= socketserver.threadingtcpserver((settings.ip,settings.port),server.serverhandler)
#server.serverhandler類在core.server檔案中,主要的功能就在那個資料夾,而這裡所有的**,就是為了實現引數解析、命令分發
s.serve_forever()
def help(self):
pass
#-*-coding:utf-8 -*-
import socketserver
class serverhandler(socketserver.baserequesthandler):
'''該類主要供是core--main檔案中呼叫
'''def handle(self):
#所有的功能都寫在handle函式中……
print("ok")
MinIO 引數解析與限制
minio server 在預設情況下會將所有配置資訊存到 minio config.json檔案中。以下部分提供每個欄位的詳細說明以及如何自定義它們。乙個完整的 config.json 在 這裡 預設的配置目錄是 minio,你可以使用 config dir選項指定新的路徑覆蓋預設的路徑。mini...
引數解析argparse與logging用法
1 什麼是argparse?argparse 是 python 內建的乙個用於命令項選項與引數解析的模組,通過在程式中定義好我們需要的引數,argparse 將會從 sys.ar 中解析出這些引數,並自動生成幫助和使用資訊。簡單說就是乙個儲存引數的類,通過呼叫就可以把自己預先定義好的引數提取出來。2...
python標準庫之引數解析庫
命令列引數解析 初級 sys.argv 高階 getopt c style parser for command line options optparse 比較老了 argparse 2.7 後面這兩個標準庫,可以生成幫助文件,引數語法等符合某種規範的引數解析 關於引數問題 位置引數,選項引數 a...