告诉python解释器在脚本本身中使用解释器命令行开关

时间:2017-04-12 21:40:18

标签: python command-line doctest

是否可以告诉python解释器使用特定的命令行开关来运行我的脚本。

例如,

如果我启用了doctests,我想添加

if __name__ == '__main__':
    import doctest
    doctest.testmod()

创建一个独立的测试运行器。

但是,这需要我添加-v开关来运行脚本:

python myscript -v

在像Sublime这样的编辑器中,构建系统默认没有开关,这并不总是很方便。我知道我可以创建一个自定义构建器,但与指定用于某些脚本的开关相比,这是次优的。

是否可能,如果可以,怎么样?

更新

有人指出doctest案例涉及脚本标志而不是解释器开关。但我真的想知道这两种情况。

虽然testmod(verbose=True)可以解决这个特殊情况,但我仍然对最初的问题感兴趣。

3 个答案:

答案 0 :(得分:1)

verbose=True传递给doctest.testmod

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

使用命令行标志混乱是错误的方法。

答案 1 :(得分:0)

您可以考虑使用环境变量。 如,

# from the command line
export VERBOSE_MODE=True

# in the Python code
import os
verbose_mode = os.environ.get('VERBOSE_MODE', False)

如果在命令行上没有提供标记,你可以将它作为一种回退机制。

答案 2 :(得分:0)

我得到了我想要的东西。在具有bash shell的系统上,我可以简单地将以下内容添加到我的脚本

的顶部
#! /usr/local/bin/python3 -m doctest -v

然后

chmod +x myscript.py

不知道如何使用Windows(也许等待Win10的Linux子系统),但幸运的是我主要使用macOS。

这也适用于其他命令行开关。