python - 如何在脚本中实现 --verbose 或 -v 选项?

标签 python command-line-arguments

我从几个工具中知道 --verbose-v,我想将其实现到我自己的一些脚本和工具中。

我想到了放置:

if verbose:
    print ...

通过我的源代码,这样如果用户通过 -v 选项,变量 verbose 将被设置为 True 并且将打印文本。

这是正确的方法还是有更常见的方法?

补充:我不是在寻求一种实现参数解析的方法。我知道它是如何完成的。我只对详细选项特别感兴趣。

最佳答案

我的建议是使用函数。但是,不要将 if 放在函数中,您可能会这样做,而是这样做:

if verbose:
    def verboseprint(*args):
        # Print each argument separately so caller doesn't need to
        # stuff everything to be printed into a single string
        for arg in args:
           print arg,
        print
else:   
    verboseprint = lambda *a: None      # do-nothing function

(是的,你可以在 if 语句中定义一个函数,并且只有在条件为真时才会被定义!

如果您使用的是 Python 3,其中 print 已经是一个函数(或者如果您愿意使用 print 作为 2.x 中的一个函数,则使用 from __future__ import print_function) 更简单:

verboseprint = print if verbose else lambda *a, **k: None

这样,如果详细模式关闭(使用 lambda),函数被定义为无操作,而不是不断测试 verbose 标志。

如果用户可以在您的程序运行期间更改详细模式,这将是错误的方法(您需要在函数中使用 if),但由于您使用命令行标志设置它,您只需要做出一次决定。

然后你使用例如verboseprint("看看我所有的冗长!", object(), 3) 每当您想打印“详细”消息时。

关于python - 如何在脚本中实现 --verbose 或 -v 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980042/

相关文章:

java - cucumber 命令行

python - 如何使用 python 将列表中的子字符串与另一个列表进行比较

python - 使用正则表达式捕获方括号内的文本

linux - 回复 : Open Matlab function from command line linux

c# - 在 Application.Restart() 之前修改命令行参数

Python动态命令行参数

c# - 将文件拖到桌面快捷方式 - 不在应用程序中打开文件

python - numpy.unique 基于计数的排序

python - 如何通过选择随机变量在 Python 中执行随机事件?

python - 如何使用 pyinstaller 在可执行文件中包含 .dll 文件?