我已经构建了一个带有嵌入式冻结模块和一些主要脚本的python二进制文件。我们调用二进制文件pyemb
。
我想使用其他python脚本中的一些冻结模块 - 似乎最好的解决方案是提供pyemb
的接口,如:
pyemb python "somescript.py --arg1 --arg2 arg3"
但是如何在我的python脚本中实现命令python
?
有exec
和execfile
Python函数,但它们不适用于参数和其他命令行内容。
答案 0 :(得分:0)
您可以使用sys.argv
之类的东西来解析命令行参数。
import sys
import subprocess
print sys.argv
if sys.argv[1] == 'python':
subprocess.Popen([sys.argv[1], sys.argv[2]])
elif sys.argv[1] == 'notepad':
subprocess.Popen([sys.argv[1], sys.argv[2]])
结果:
>> python scratch.py python argument
['scratch.py', 'python', 'argument']
python: can't open file 'argument': [Errno 2] No such file or directory
>> python scratch.py python "argument argument2"
['scratch.py', 'python', 'argument agument2']
python: can't open file 'argument agument2': [Errno 2] No such file or directory
对于更强大的参数解析,我建议argparse
。
答案 1 :(得分:0)
像这样简单的东西应该有效:
if sys.argv[1] == 'python':
sys.argv.pop(1)
import runpy
runpy.run_path(sys.argv[1], run_name="__main__")
模块runpy非常方便。