python使用技巧(二十四):彻底学会argparse与sys.argv方法

详细说明直接看代码,这里就不注水了。

1、sys.argv

import sys
a=sys.argv[0]  # 当前py路径目录
print(a)
b=sys.argv[1]  #从所以为1开始加入参数
print(b)
c = sys.argv[2:] #2后面的参数都是这个,多余两个自动生成list
#如果制定维度,则[2:4]
print(c)
if __name__ == '__main__':
    pass

# python test_argv.py 2021 x y z m n
'''
test_argv.py
2021
['x', 'y', 'z', 'm', 'n']
'''

2、argparse

案例1:

#-*- coding: UTF-8 -*-
import argparse   #步骤一

def parse_args():
    """
    :return:进行参数的解析
    """
    parser = argparse.ArgumentParser(description="you should add those parameter")        # 这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,                                                                     # 会打印这些描述信息,一般只需要传递description参数,如上。
    parser.add_argument('--addresses',default="sipingroad", help = "The path of address")
    parser.add_argument('--gpu', default=0)# 步骤二,后面的help是我的描述
    args = parser.parse_args()                                       # 步骤三
    return args

if __name__ == '__main__':
    args = parse_args()
    print(args.addresses)            #直接这么获取即可。
"""
   1、python test_arg.py -h  #帮助
usage: test_arg.py [-h] [--addresses ADDRESSES] [--gpu GPU]
you should add those parameter
optional arguments:
  -h, --help            show this help message and exit
  --addresses ADDRESSES
                        The path of address
  --gpu GPU
  
  2、python test_arg.py --addresses this-is-parameter-of-addresses #输入参数 

  this-is-parameter-of-addresses
  
"""


案例2:


import os
import sys
import argparse


def parse_arguments():
    parser = argparse.ArgumentParser()


    parser.add_argument('--dataset_train_dir', type=str, help='数据集训练数据路径', default='./dataset/MIR-1K/Wavfile')
    # parser.add_argument('--dataset_validate_dir', type=str, help='数据集验证数据路径', default='./dataset/MIR-1K/UndividedWavfile')
    # parser.add_argument('--model_dir', type=str, help='模型保存的文件夹', default='model')
    # parser.add_argument('--model_filename', type=str, help='模型保存的文件名', default='svmrnn.ckpt')
    # parser.add_argument('--dataset_sr', type=int, help='数据集音频文件的采样率', default=16000)
    # parser.add_argument('--learning_rate', type=float, help='学习率', default=0.0001)
    # parser.add_argument('--batch_size', type=int, help='小批量训练数据的长度', default=64)
    # parser.add_argument('--sample_frames', type=int, help='每次训练获取多少帧数据', default=10)
    # parser.add_argument('--iterations', type=int, help='训练迭代次数', default=30000)
    # parser.add_argument('--dropout_rate', type=float, help='dropout率', default=0.95)


    return parser.parse_args()


# # def main(args):
# #先看数据集数据是否存在
# if not os.path.exists(args.dataset_train_dir) or not os.path.exists(args.dataset_validate_dir):
#     raise NameError('数据集路径"./dataset/MIR-1K/Wavfile"或"./dataset/MIR-1K/UndividedWavfile"不存在!')


if __name__ == '__main__':
    args = parse_arguments()
    print(args.dataset_train_dir)

    # print(parse_arguments(sys.argv[1:]))

    # python est1.py - -dataset_train_dir = / data / 2021
    # 输出结果:/ data / 2021






3、结合两种使用更好


import os
import sys
import argparse


def parse_arguments(argv):
    parser = argparse.ArgumentParser()

    #如果路径不成功,可以直接输入绝对路径
    parser.add_argument('--dataset_train_dir', type=str, help='数据集训练数据路径', default='./dataset/MIR-1K/Wavfile')
    parser.add_argument('--dataset_validate_dir', type=str, help='数据集验证数据路径', default='./dataset/MIR-1K/UndividedWavfile')
    # parser.add_argument('--model_dir', type=str, help='模型保存的文件夹', default='model')
    parser.add_argument('--model_filename', type=str, help='模型保存的文件名', default='svmrnn.ckpt')
    # parser.add_argument('--dataset_sr', type=int, help='数据集音频文件的采样率', default=16000)
    # parser.add_argument('--learning_rate', type=float, help='学习率', default=0.0001)
    # parser.add_argument('--batch_size', type=int, help='小批量训练数据的长度', default=64)
    # parser.add_argument('--sample_frames', type=int, help='每次训练获取多少帧数据', default=10)
    # parser.add_argument('--iterations', type=int, help='训练迭代次数', default=30000)
    # parser.add_argument('--dropout_rate', type=float, help='dropout率', default=0.95)


    return parser.parse_args(argv)


def main(args):
    #先看数据集数据是否存在
    if not os.path.exists(args.dataset_train_dir) or not os.path.exists(args.dataset_validate_dir):
        print('1111111-----11111')
        raise NameError('数据集路径"./dataset/MIR-1K/Wavfile"或"./dataset/MIR-1K/UndividedWavfile"不存在!')
        print('22222-----22222')
    else:
        print("路径参数都正确啦!")




if __name__ == '__main__':
    args2021 = parse_arguments(sys.argv[1:])

    print(args2021)
    # 案例1:
    # 表示上面的参数dataset_train_dir后面可以从1开始
    #终端输入参数:python test_arg_path.py --dataset_train_dir=/data/tensorflow
    # 结果:Namespace(dataset_train_dir='/data/tensorflow')

    # 案例2:
    # 表示上面的参数dataset_train_dir后面可以从1开始
    # python test_arg_path.py --model_filename==/tensorflow2/data
    #结果:上次没输入的参数也会输出
    # Namespace(dataset_train_dir='./dataset/MIR-1K/Wavfile', model_filename='=/tensorflow2/data')

    # python test_arg_path.py - -model_filename == 696969696
    # Namespace(dataset_train_dir='./dataset/MIR-1K/Wavfile', model_filename='=696969696')

    main(parse_arguments(sys.argv[1:]))

    #输出结果:
    '''
     python test_arg_path.py --model_filename=696969696 --dataset_train_dir=./dataset/MIR-1K/Wavfile
      --dataset_validate_dir=./separation_of_voice_and_music/dataset/MIR-1K/UndividedWavfile
    输出:
    Namespace(dataset_train_dir='./dataset/MIR-1K/Wavfile', 
    dataset_validate_dir='./separation_of_voice_and_music/dataset/MIR-1K/UndividedWavfile', 
    model_filename='696969696')
    路径参数都正确啦!

    '''







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值