【发布时间】:2017-03-17 02:39:03
【问题描述】:
为方便起见,某些 Linux 命令提供了一个与给定选项组等效的单个选项。例如,rsync 有一个选项 -a,它等效于 -rlptgoD。对于 Python 脚本,是否可以使用 argparse 来实现此行为?还是应该将 -a 选项传递给我的代码并在那里处理?
【问题讨论】:
-
没有内置机制可以做到这一点。
为方便起见,某些 Linux 命令提供了一个与给定选项组等效的单个选项。例如,rsync 有一个选项 -a,它等效于 -rlptgoD。对于 Python 脚本,是否可以使用 argparse 来实现此行为?还是应该将 -a 选项传递给我的代码并在那里处理?
【问题讨论】:
rsync 已经存在了足够长的时间,以至于它(或许多实现)可能使用getopt 来解析命令(如果它不进行自己的解析)。 Python 的版本为getopt。 c 版本或python 都没有将-a 命令替换为-rlptgoD 的机制。任何此类替换都会在解析后执行。
解析器的主要目的是解码用户想要的内容。对这些信息采取行动是您的代码的责任。
我可以想象编写一个自定义的Action 类来一次设置多个属性。但它不会节省任何编码工作。它看起来很像解析后使用的等效函数。
【讨论】:
Action 类之后进行工作,那么我们也必须在那里进行更改。随它吧。感谢您的宝贵时间。
parse_args 之前编辑sys.argv。并且间接存在用于从文件中读取参数字符串的fromfile_prefix_chars 机制。这可以用-rletap 或更多替换@a。