python 使用读取sys.argv的指定参数

最近需要编写一个能接收外来参数的文件,在网络上进行搜索学习后发现有两个问题,一个是网上的教程都是直接调用argv[1] argv[2]这样子的,我如果想要指定参数比如–label xxx这样的,需要怎么做呢,还有就是接收了外部参数以后,需要根据这些外部参数对本地参数重新进行赋值。我想到的解决方法就是以字典的形式对sys.argv进行解析或得输入参数的字典,然后再使用global()方法对这些本地变量进行赋值操作。
注意输入的时候有可能输入的数据是数字,需要对这部分先进行一个判断

def to_number(s):
   #判断是否是数字,返回字符串转化的数字
    try:
        if '.' in s:
           float(s)
           return float(s)
        else:
           int(s)
           return int(s)
    except ValueError:
        return s

def get_input_args_dict(input_args=['']):
    # 输入参数,获取返回的参数字典
    args_dict = {}
    count = 0
    for each_str in input_args:
        if each_str.startswith('--'):
            current_args = input_args[count + 1]
            current_args = to_number(current_args)
            if current_args == 'True':
                current_args = True
            if current_args == 'False':
                current_args = False
            args_dict.update({each_str[2:]: current_args})
        count += 1
    return args_dict

调用的时候,只需要根据对应的参数,从字典里取值再赋值即可

samples_dir = "../data/black_samples/"
model_path='../model/Malconv_single.model'
result_path='pred.csv'
input_args_dict=get_input_args_dict(sys.argv)
for each_args in input_args_dict:
    if input_args_dict.get(each_args) is not None:
        globals()[each_args] = input_args_dict.get(each_args)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值