【问题标题】:How to call function based on argparse using selective structure?如何使用选择性结构调用基于 argparse 的函数?
【发布时间】:2019-11-17 01:07:18
【问题描述】:

我是 python 新手,我想知道如何在选择性结构上调用基于 argparse 的函数

我试过这个功能

def parseArgument(abv, name, hdescriptop, isrequired):
  parser=argparse.ArgumentParser()
  parser.add_argument(abv, 
                      name, 
                      help=hdescription, 
                      required=isrequired,
                      action="store_true",
                      )
  args=parser.parse_args()
  return args

parseArgument("-y", "--humedity", "Calculate humedity", False)

if args.cycle:
  print("DPV cycle: ", DPV(w, 0, list_DPV_CYCLE, count_NC))
#elif args.moredata:
#  print(more data)

*提示:无需知道 DPV 是什么

我希望当我在终端上运行 python 脚本并编写 python nameofthescript.py -y,获取被调用函数 parseArgument() 具有选择性结构

【问题讨论】:

  • 使用store_true时不要设置required参数。 parseArgument 返回一个 args 变量;调用代码应该保存它;例如..args = parseArgument(...)。调试时添​​加print(args)。为什么您期望 args.circle 属性?您没有定义 circle 参数。
  • @hpaulj 你是对的。 args.cicle 在我使用时为我工作,但没有使其成为函数parser.add_argument('-c','--cycle', action="store_true", help="show cycle data")

标签: python python-3.x function argparse


【解决方案1】:

跟进我的评论:

In [50]: def parseArgument(argv, abv, name, hdes): 
    ...:   parser=argparse.ArgumentParser() 
    ...:   parser.add_argument(abv,  
    ...:                       name,  
    ...:                       help=hdes,  
    ...:                       action="store_true", 
    ...:                       ) 
    ...:   args=parser.parse_args(argv) 
    ...:   return args 
    ...:  
    ...: args = parseArgument([], "-y", "--humedity", "Calculate humedity")                                     
In [51]: args                                                                                                   
Out[51]: Namespace(humedity=False)
In [52]: args.humedity                                                                                          
Out[52]: False

测试不同的命令行:

In [53]: args = parseArgument(['-y'], "-y", "--humedity", "Calculate humedity")                                 
In [54]: args                                                                                                   
Out[54]: Namespace(humedity=True)
In [55]: args.humedity                                                                                          
Out[55]: True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2013-01-17
    • 2012-09-07
    • 2013-08-10
    • 1970-01-01
    • 2019-11-29
    • 2011-06-30
    相关资源
    最近更新 更多