前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python | argparse传递参数

python | argparse传递参数

作者头像
努力在北京混出人样
发布2019-02-18 17:32:16
1.9K0
发布2019-02-18 17:32:16
举报
文章被收录于专栏:祥子的故事祥子的故事

通过命令行的形式来传递参数,使得配置参数容易起来。这里介绍python包argparse

核心函数解析

代码语言:javascript
复制
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
  • name or flags Either a name or a list of option strings, e.g. foo or -f, --foo. 用于标识参数的参数,必须有,通常以-或–来表示
代码语言:javascript
复制
from argparse import ArgumentParser
parse = ArgumentParser.add_argument('--s','-s')
## 保留1个或者2个均可。
  • action action - The basic type of action to be taken when this argument is encountered at the command line. 默认是store,表示存参数的值,store_const 表示以常量的形式来存储,append 列表,append_const 列表常量。
  • nargs nargs - The number of command-line arguments that should be consumed nargs=2 表示包含两个值的参数列表 nargs=’*’ 表示任意个参数 nargs=’+’ 表示至少一个参数
  • default 默认值
  • type 参数的数值类型
  • choices 给定候选的值
  • required 是否为必须给定的参数
  • help 参数解释
  • dest 这个参数相当于把位置或者选项关联到一个特定的名字
  • metavar 这个参数用于help信息输出中

案例

  • 第一步:定义函数
代码语言:javascript
复制
import os
import pandas as pd
import argparse

def get_onefile_result(filename, threshold):
    dftmp = pd.read_csv(filename)
    df = dftmp.iloc[180:,:]
    min_time=df['times'].min()
    max_time=df['times'].max()
    rows = df.shape[0]
    abnormal_amount = df[df['scores']>=threshold].shape[0]

    t = [filename, min_time, max_time, rows, abnormal_amount]
    return t
  • 第二步: 配置参数
代码语言:javascript
复制
def main():
	## 管理参数,创建实例
	parser = argparse.ArgumentParser(description='new')
    
    ## --src\-s 均可使用,metavar用来生成帮助信息,required表明这个参数是必须有的,dest指参数的名称,action指执行的逻辑,help是帮助信息,type是指参数类型
    parser.add_argument("--src","-s",metavar='filename',required=True, dest='filename', action='append',help='text pattern to search for',type=str)

	## --out 或-o,必须有,默认是slow,可选择范围是slow、fast,类型是str
    parser.add_argument("--out","-o",metavar='pattern',required=True, dest='patterns', action='append',choices={2,3}, default=2, type=int)
    
    args = parser.parse_args()
    if args.s:
    	filename = args.s
    if args.o:
    	threshold = args.o
    
    return get_onefile_result(filename,threshold)

if __name__ == "__main__":
	main()
  • 第三步:使用
代码语言:javascript
复制
## 在shell端或者cmd端,输入,以上文件存放在同一个python脚本内,命名为argps.py
>> python argps.py -s data.csv -o 3
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 核心函数解析
  • 案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档