如何在Python中进行真正便宜的命令行解析?

Ram*_*amy 0 ruby python parsing command-line-arguments

我一直在大量使用" 真正廉价的命令行选项解析Ruby " 中的答案.这对我的目的来说很棒,总是我需要的.

现在我发现自己回到了Python领域,因为内部库支持我想做的事情.我正在考虑将它移植到Ruby,但这超出了这个问题的范围,但我想使用类似的东西.

这是我在Ruby中经常使用的非常便宜的方法:

$quiet       = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
Run Code Online (Sandbox Code Playgroud)

如果有一个"-d"ARGV数组,然后$quiet设置为"-d"不为零.如果没有"-d",那就$quiet变成了nil.

我可以在Python中做些类似的事吗?

rnb*_*guy 6

您可能想要使用sys.argv:

from sys import argv
quiet = '-d' in argv # True if '-d' in argv else False
Run Code Online (Sandbox Code Playgroud)

如果要删除'-d'argv,改变第二行这样的:

quiet = '-d' in argv and (argv.remove('-d') or True)
Run Code Online (Sandbox Code Playgroud)

如果这降低了它的便宜性,让我们来做它的功能:

getArg = lambda x: x in argv and (argv.remove(x) or True)
quiet = getArg('-d')
interactive = getArg('-i')
Run Code Online (Sandbox Code Playgroud)