optparse 模块
解析命令行上的命令
# bin 下的 ftp_server.py
import sys, os
# ftp_server.py 的搜索路径只在 bin 下,下面是将 FTP_server 目录添加进来,以便导入 core 下的 main
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR) # E:\PycharmProjects\oldboy\FTP 作业\FTP_server
from core import main
if __name__ == '__main__':
main.ArgvHandler()
# core 下的 main.py
import optparse
class ArgvHandler:
def __init__(self):
self.op=optparse.OptionParser()
self.op.add_option('-s', '--server', dest='server')
self.op.add_option('-P', '--port', dest='port')
options, args = self.op.parse_args()
print(options) # {'server': '127.0.0.1', 'port': '8080'}
print(type(options)) # <class 'optparse.Values'> optparse 对象
print(options.server)
print(options.port)
print(args) # ['ab', 'cd', '12'] 收集额外的参数,组成列表
命令行:
E:\PycharmProjects\oldboy\FTP 作业\FTP_server\bin>python ftp_server.py -s 127.0.0.1 -P 8080 ab cd 12
{'server': '127.0.0.1', 'port': '8080'}
<class 'optparse.Values'>
127.0.0.1
8080
['ab', 'cd', '12']
optparse 模块可以解析命令行上的命令,通过 -s、-P 类似这种标识来标识命令,从而取得命令中的相关值。options 是一个 optparse 对象,它类似于字典,但是想要取其中的值,需要用点(.)的方式才能取到。
利用这种方式,我们就可以轻易取到命令中的端口、ip