【问题标题】:Can Python's argparse replace a single option by a group of options?Python 的 argparse 可以用一组选项替换单个选项吗?
【发布时间】:2017-03-17 02:39:03
【问题描述】:

为方便起见,某些 Linux 命令提供了一个与给定选项组等效的单个选项。例如,rsync 有一个选项 -a,它等效于 -rlptgoD。对于 Python 脚本,是否可以使用 argparse 来实现此行为?还是应该将 -a 选项传递给我的代码并在那里处理?

【问题讨论】:

  • 没有内置机制可以做到这一点。

标签: python argparse


【解决方案1】:

rsync 已经存在了足够长的时间,以至于它(或许多实现)可能使用getopt 来解析命令(如果它不进行自己的解析)。 Python 的版本为getoptc 版本或python 都没有将-a 命令替换为-rlptgoD 的机制。任何此类替换都会在解析后执行。

解析器的主要目的是解码用户想要的内容。对这些信息采取行动是您的代码的责任。

我可以想象编写一个自定义的Action 类来一次设置多个属性。但它不会节省任何编码工作。它看起来很像解析后使用的等效函数。

【讨论】:

  • 好的,谢谢。我希望有一种机制,解析器只需将 -a 替换为 -rlptgoD before 解析 -r 等。这样,如果我们以后想要更改 -r 的解析(例如,更改相应的属性)我们只需要在一个地方进行更改。另一方面,如果我们在解析或使用自定义Action 类之后进行工作,那么我们也必须在那里进行更改。随它吧。感谢您的宝贵时间。
  • 如果您想这样做,请在调用parse_args 之前编辑sys.argv。并且间接存在用于从文件中读取参数字符串的fromfile_prefix_chars 机制。这可以用-rletap 或更多替换@a
猜你喜欢
  • 2014-07-26
  • 2013-07-06
  • 2016-08-11
  • 2017-03-12
  • 2013-12-01
  • 2021-07-30
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多