【问题标题】:How to pass filepath as command line arugement in argparse python如何在argparse python中将文件路径作为命令行参数传递
【发布时间】:2019-02-15 15:08:05
【问题描述】:

我需要通过像

 Python test.py -H host -U usr -P pass -L c:\newfolder\sample.sh -R /shell/sample.sh

我收到错误消息too many values to unpack

请帮助我实现这一目标。

def check_argv(args=None)
    parser = argparse.argumentParser()
    parser.add_arugument('-H' , 'host')
    #Same for all argument
#---------------------------------


Host, pass, user , local , remote = check_arg(sys.argv[1:])

【问题讨论】:

  • 您好,您需要输入更多信息,而不是说“#Same for all argument”,您应该输入所有参数,因为您传递给您的值之一可能有问题解析器。
  • 请发布check_argv()的完整代码。
  • 如果您的check_argv 就是这样,那么它返回None,这显然与调用语句所期望的5 个变量不匹配。您需要以一种或另一种方式调用parse_argsreturn 这五个值。

标签: python python-2.7 argparse


【解决方案1】:

您可能会收到错误,因为您收集的值 less 比您的函数元组返回的值。这是一致的。

以及argparser函数的正确使用方法:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-H', action="store", dest="host")
parser.add_argument('-U', action="store", dest="usr")

params = parser.parse_args()

在您的代码中,您可以像这样获取参数

# FETCHING ARGUMENT DETAILS
print(params.host, params.usr)

输出:

$python test.py -H hostname -U testuser   
>>>hostname testuser

您可以根据需要继续添加任意数量的值并以相同的方式取回它们。

【讨论】:

  • 我的问题是不打印或如何获取该值..而通过arugement它抛出错误
  • 您收到错误是因为您收集的值多于函数元组返回的值。
  • @VineethSai 您应该只保留答案的第二部分,这是使用argparse 的正确方法。在 OP 发布他的 check_arrg() 函数的完整代码之前,其他任何事情都是模糊的疯狂猜测,无论如何也不会增加太多。
  • 好的@brunodesthuilliers
猜你喜欢
  • 1970-01-01
  • 2012-03-12
  • 2016-08-11
  • 2012-09-24
  • 1970-01-01
  • 2015-02-20
  • 2021-10-10
  • 2013-06-03
相关资源
最近更新 更多