当前位置: 首页 > news >正文

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

目录

  • 1、sys.argv
  • 2、argparse
  • 3、结合两种使用更好

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

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')
    路径参数都正确啦!

    '''







相关文章:

  • 开发工具使用1:UbuntuX.Y
  • DataGrid连接Access的快速分页法(4)——动态生成SQL语句
  • Linux超级超级管理pkexec权限完美解决/etc/sudoers、/etc/sudoers.d is world writable和kex_exchange
  • DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)
  • 在 Linux 上安装 FL Studio
  • DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)
  • 音乐人声分离[源码教程连接]
  • SoundTouch音频处理库
  • DataGrid连接Access的快速分页法(1)——需求与现状
  • 自动驾驶:使用 3D 时空卷积网络的自监督点云预测
  • 文件共享的新面孔——《纽约时报》专访BitTorrent之父
  • 实战OpenPose项目1:开篇使用文档
  • 实战OpenPose项目2:开发环境配置与demo运行
  • Martin Fowler:设计已死?
  • 实战OpenPose项目3:pytorch 实现openpose(包括手和身体姿态估计)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 2017-08-04 前端日报
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java面向对象及其三大特征
  • js操作时间(持续更新)
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • 闭包--闭包之tab栏切换(四)
  • 创建一种深思熟虑的文化
  • 高程读书笔记 第六章 面向对象程序设计
  • 观察者模式实现非直接耦合
  • 基于axios的vue插件,让http请求更简单
  • 基于web的全景—— Pannellum小试
  • 每天一个设计模式之命令模式
  • 那些年我们用过的显示性能指标
  • 人脸识别最新开发经验demo
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 算法-图和图算法
  • 鱼骨图 - 如何绘制?
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (4.10~4.16)
  • (Python) SOAP Web Service (HTTP POST)
  • (层次遍历)104. 二叉树的最大深度
  • (一)Java算法:二分查找
  • (转)创业的注意事项
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net分布式压力测试工具(Beetle.DT)
  • .NET运行机制
  • @angular/cli项目构建--Dynamic.Form
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [30期] 我的学习方法
  • [BJDCTF2020]The mystery of ip
  • [CareerCup] 14.5 Object Reflection 对象反射