【问题标题】:Two sets of arguments python两组参数python
【发布时间】:2016-03-14 02:37:09
【问题描述】:

我喜欢 gdb 和 lldb 如何接受两组参数,一组用于 gdb/lldb 本身,一组用于目标应用程序。例如:

lldb /bin/ls -- -al -foo=bar

在双破折号“--”的左侧,您可以放置​​ lldb 参数,在右侧,您可以放置​​目标参数。有没有办法在我的 Python 脚本中读取两组这样的参数?

【问题讨论】:

  • 好吧,只需拆分参数数组:n = sys.argv.index('--'); left = sys.argv[:n]; right = sys.argv[n+1:] 并在找不到 -- 时捕获 ValueError。
  • 正如@4ae1e1 指出的那样,在我上面的评论中将sys.argv 替换为sys.argv[1:](最好创建另一个变量并使用它)

标签: python bash arguments command-line-interface


【解决方案1】:

是的! ArgumentParser.parse_args() 可以选择采用参数列表,其格式与您在 sys.argv 中看到的类似。

import sys
import argparse

first_parser = argparse.ArgumentParser()
first_parser.add_argument('arg1')

second_parser = argparse.ArgumentParser()
second_parser.add_argument('arg2')

first_args = []
second_args = []
double_dashed = False
for arg in sys.argv[1:]:
    if arg == '--':
        double_dashed = True
    elif not double_dashed:
        first_args.append(arg)
    else:
        second_args.append(arg)
print(first_parser.parse_args(first_args))
print(second_parser.parse_args(second_args))

打印出来:

$ ./example.py one -- two
Namespace(arg1='one')
Namespace(arg2='two')

【讨论】:

  • @4ae1e1,附加有效的。它需要恒定的平均时间(使用常见的双容量策略)。另外,完全不需要担心参数解析的性能。
  • @4ae1e1。为什么你一直声称它是低效的?同样,它需要恒定平均时间,就像切片一样。
  • @4ae1e1:反驳你的虚假声明
  • 我的评论现在有什么问题?检查了它,它的工作原理。
猜你喜欢
  • 1970-01-01
  • 2021-04-18
  • 2013-08-31
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多