如何解析Python可执行文件的标志?

时间:2013-07-23 15:57:04

标签: python command-line-arguments

如果我有一个python可执行文件hello_world.py,例如

#!/opt/local/bin/python
print 'hello world!'

我打电话通过

chmod u=rwx hello_world.py
./hello_world.py

按预期工作,但是...我如何解析解释器标志,以便我可以在交互模式下运行它?例如

./hello_world.py -i
>>>

我知道我可以编辑shebang以便传递某些标志,例如#!/opt/local/bin/python -i -d但我想要一种动态的方法来控制这些在运行可执行文件时可以输入的标志。

由于

2 个答案:

答案 0 :(得分:1)

  1. /opt/local/bin/python重命名为/opt/local/bin/python2
  2. 创建一个解析标志并调用python2的shellcript。将其命名为/opt/local/bin/python
  3. 利润
  4. 如果您尝试使用这些选项分发脚本,那将会很痛苦

答案 1 :(得分:1)

您可以在sys.argv中查找-i标志(可能使用argparse模块)。

然后使用code.interactpdb.set_trace()启用交互模式。

通常,您的脚本应该结构如下:

#!/usr/bin/env python

...

if __name__ == '__main__':
    ...
    # the actual script code
    ...
    if '-i' in sys.argv[1:]:  # or something equivalent
        import code
        local=locals() # or any variables you want to have available
        code.interact(local=local)

提示:

  • 尝试保持if-block轻量级并将脚本逻辑保留在模块级函数中 - 这在测试期间非常有用。)
  • #!/usr/bin/env python是查找python可执行文件的传统跨平台方式。

另请参阅:python: run interactive python shell from program