python使用技巧(二十四):彻底学会argparse与sys.argv方法
2023-09-14 09:15:32 时间
详细说明直接看代码,这里就不注水了。
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')
路径参数都正确啦!
'''
相关文章
- 【Python】zip文件密码破解
- python用reduce和map把字符串转为数字的方法
- 华为OD机试 - 硬件产品销售方案(Java & JS & Python)
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python编程语言学习:python编程语言中重要函数讲解之map函数等简介、使用方法之详细攻略
- Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python编程语言学习:python编程语言中重要函数讲解之map函数等简介、使用方法之详细攻略
- Python编程语言学习:python的列表的特殊应用之一行命令实现if判断中的两类判断
- Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用技巧方法集合之详细攻略
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
- Py之chatterbot:python包之Chatterbot包/wxpy包简介、安装、使用方法之详细攻略
- Py之PyMySQL:Python库之PyMySQL的简介、安装、使用方法之详细攻略
- Python全栈之路:list列表常用方法
- python 名称前的单下划线
- Python使用技巧(九):枚举模块enumerate()方法
- 写网络爬虫天然就是择Python而用 python 网络爬虫3
- 学数据分析 那种语言好——Python还是R?
- python基础===Python 代码优化常见技巧
- python 常库介绍及安装方法
- python工具方法36 lableme标注转voc格式再转yolo格式(含voc数据集划分代码)
- python工具方法 21 应用于语义分割、图像分类、自动编码机的图像随机mask方法(Cutout方法、Random Erasing方法)
- Python使用技巧(十五):静态类方法@staticmethod和@classmethod