python argh / argparse:我如何传递一个列表作为命令行参数?

我想使用argh库将参数列表传递给python脚本。 可以采取如下input的东西:

./my_script.py my-func --argA blah --argB 1 2 3 4 ./my_script.py my-func --argA blah --argB 1 ./my_script.py my-func --argA blah --argB

我的内部代码如下所示:

import argh @argh.arg('--argA', default="bleh", help='My first arg') @argh.arg('--argB', default=[], help='A list-type arg--except it\'s not!') def my_func(args): "A function that does something" print args.argA print args.argB for b in args.argB: print int(b)*int(b) #Print the square of each number in the list print sum([int(b) for b in args.argB]) #Print the sum of the list p = argh.ArghParser() p.add_commands([my_func]) p.dispatch()

以下是它的行为:

$ python temp.py my-func --argA blooh --argB 1 blooh ['1'] 1 1 $ python temp.py my-func --argA blooh --argB 10 blooh ['1', '0'] 1 0 1 $ python temp.py my-func --argA blooh --argB 1 2 3 usage: temp.py [-h] {my-func} ... temp.py: error: unrecognized arguments: 2 3

这个问题看起来相当简单:argh只接受第一个参数,并将其视为一个string。 我如何使它“期待”一个整数列表,而不是?

我看到这是如何在optparse中完成的 ,但是(未被弃用的)argparse呢? 或者用argh的更好的装饰语法? 这似乎更加pythonic。

用argparse ,你只需要使用type=int

import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--arg', nargs='+', type=int) print parser.parse_args()

示例输出:

$ python test.py -a 1 2 3 Namespace(arg=[1, 2, 3])

编辑:我不熟悉argh ,但它似乎只是一个包装argparse ,这对我工作:

import argh @argh.arg('-a', '--arg', nargs='+', type=int) def main(args): print args parser = argh.ArghParser() parser.add_commands([main]) parser.dispatch()

示例输出:

$ python test.py main -a 1 2 3 Namespace(arg=[1, 2, 3], function=)

我为了访问每个参数值,下面的代码可能会有所帮助。

import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--arg', nargs='+', type=int) args = vars(parser.parse_args()) print "first parameter:" + str(args["arg"][0]) print "second parameter:" + str(args["arg"][1]) print "third parameter:" + str(args["arg"][2])

python main传参args_python argh / argparse:我如何传递一个列表作为命令行参数?相关推荐

  1. python main传参args_python argh/argparse:如何将列表作为命令行参数传递?

    我试图使用argh库将参数列表传递给python脚本.可以接受如下输入的东西:./my_script.py my-func --argA blah --argB 1 2 3 4 ./my_script ...

  2. python add argument list_python argh/argparse:我如何传递一个列表作为命令行参数?

    我试图传递一个参数列表到python脚本使用argh库.可以接受这样的输入的东西: ./my_script.py my-func --argA blah --argB 1 2 3 4 ./my_scr ...

  3. python main传参args,详解用Python处理Args的3种方法

    1. sys 模块 Python 中的 sys 模块具有 argv 功能.当通过终端触发 main.py 的执行时,此功能将返回提供给 main.py 的所有命令行参数的列表.除了其他参数之外,返回列 ...

  4. Pycharm下运行调试Python项目时,当调试既需要给调试的程序传入命令行参数又需要程序在设置的断点处停下里查看变量时的解决方法

      今天在调试了一个复杂的Python项目,其中这个项目的调试需要事先从命令行读取参数,并且在调试期间需要再事先设置的断点处停下来.检查相关的变量.   问题是,在Pycharm的Terminal 输 ...

  5. 【Python】 配置解析ConfigParser 命令行参数解析optparser

    ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...

  6. python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser

    ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...

  7. C++ main函数命令行参数使用

    1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv ...

  8. java调用python,传参json字符串,含中文传参

    java调用python,传参json字符串 python脚本内容(test.py) # -*- coding: utf-8 -*-def main(input):return input java调 ...

  9. python 元组传参 *args 字典传参 **kwargs 的用法

    python 元组传参 *args 字典传参 **kwargs 的用法 # 元组参数 def func_arg(*args):print("args:", args) func_a ...

最新文章

  1. python求13号是星期几的次数_Python简单计算给定某一年的某一天是星期几示例
  2. linux 系统中断信息,关于操作系统:中断处理(Linux /常规)
  3. 前端传数据到后台部分接收成功,部分接收失败
  4. 浮小麦升浮之气的本质
  5. 魔术方法php重定向,PHP魔术方法__get()
  6. 操作系统:Linux环境变量相关知识总结
  7. html跑马灯效果代码加速,网页特效_跑马灯特效代码大全一
  8. linux fcntl函数,Linux C 学习之 - fcntl 函数
  9. Session简单使用
  10. MessageQueue消息队列——基础(笔记)
  11. 携程校招编程题 bit count
  12. 适合长期电脑办公人群的养生小技巧
  13. linux安装jdk及配置
  14. slotformatcombinations_向未授权频谱中的小区应用时隙格式指示的方法和设备与流程...
  15. 第四章:数据存储-csv文件处理-读取csv文件的两种方式
  16. PHP将ppt转成图片查看
  17. linux进阶-自编译安装dropbear
  18. Roslyn:The invoked member is not supported in a dynamic assembly.
  19. 华硕笔记本桌面没有显示计算机,华硕笔记本进不了桌面怎么办
  20. 注会java_CPA理论与Base理论(示例代码)

热门文章

  1. python基础复习(30)--string[start:end:step] start默认0 end默认列尾 step默认1
  2. 浅谈爬虫工作中HTTPIP的重要性
  3. 古代日本人没有姓,只有名
  4. stm8L ADC多通通DMA采集和EEPROM一起使用解决死机和数据错位问题——寄存器
  5. 30、T5L 迪文屏 C51开发之 ADC模数转换
  6. Cantor(有理数)
  7. 常见问题:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候执行?
  8. bton框架业务核心流程架构
  9. win10计算机出现位置不可用desktop不可用,桌面只有此电脑几个图标,其它桌面图标都没有了
  10. 《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)