文章内容
2020/9/25 16:45:20,作 者: 黄兵
Python命令行参数
最近在Python中需要根据在命令行中不同参数,运行不同程序,参考了这篇文章:Command Line Arguments in Python,写了一个Python命令行参数程序,具体代码如下:
# !/usr/bin/env python # -*- coding: utf-8 -*- """ 将所有IPv4地址增加到数据库,同时host所有IP地址,获得主机名 获取所有IP地址地理位置等功能 """ import getopt import sys from comm import ip_range from config import LoggingConfig class IPMain: def __init__(self): self._ip_range = ip_range.IPRange() logger_name = 'restore ip' self._logger = LoggingConfig.init_logging(logger_name) def select_run_program(self, argv): # Remove 1st argument from the # list of command line arguments argumentList = argv # Options options = "hr:" # Long options long_options = ["Help", "restore_ip", "current_network="] try: # Parsing argument arguments, values = getopt.getopt(argumentList, options, long_options) # checking each argument for currentArgument, currentValue in arguments: if currentArgument in ("-h", "--Help"): print("请输入需要运行的程序名,例如:restore_ip,直接输入:-r restore_ip,或者 --restore_ip") print("下面是主要的程序名称及作用:") print("restore_ip:主要是枚举IPv4的ABC类所有的IP地址,并保存到数据库") print("current_network:枚举所有保留IP地址,并保存到数据库") elif currentArgument in ("-r", "--restore_ip"): if currentValue == 'restore_ip': self._ip_range.restore_ip() if currentValue == 'current_network': self._ip_range.current_network() elif currentArgument in ("-r", "--current_network"): if currentValue == 'restore_ip': self._ip_range.restore_ip() if currentValue == 'current_network': self._ip_range.current_network() except getopt.error as err: # output error, and return with an error code self._logger.error(f'程序执行错误,具体错误内容: {err}') if __name__ == '__main__': IPMain().select_run_program(sys.argv[1:])
这里主要说一下options
这个参数:
options
:脚本要识别的选项字母的字符串。需要自变量的选项应后跟冒号(:)。
上面程序主要是h和r参数,所以这里是options='hr:'
同时这里long_options=['Help','restore_ip','current_network=']
,最后一个参数最主要是当输入:-r current_network
的时候,会使用判断的方式运行相应程序。
参考资料:
1、Command Line Arguments in Python
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - Python命令行参数
NotMeBug on 回复 有用(0)
有讨论群吗?关于博客/云短信
游客83Zh on 2020-09-29 10:58:24
博主回复:现在没有讨论群。