如果我有一个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
但我想要一种动态的方法来控制这些在运行可执行文件时可以输入的标志。
由于
答案 0 :(得分:1)
/opt/local/bin/python
重命名为/opt/local/bin/python2
python2
的shellcript。将其命名为/opt/local/bin/python
如果您尝试使用这些选项分发脚本,那将会很痛苦
答案 1 :(得分:1)
您可以在sys.argv
中查找-i标志(可能使用argparse
模块)。
然后使用code.interact
或pdb.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)
提示:
#!/usr/bin/env python
是查找python可执行文件的传统跨平台方式。