如何使用“冻结”Python二进制文件中的参数执行python脚本?

时间:2016-05-19 09:50:58

标签: python

我已经构建了一个带有嵌入式冻结模块和一些主要脚本的python二进制文件。我们调用二进制文件pyemb

我想使用其他python脚本中的一些冻结模块 - 似乎最好的解决方案是提供pyemb的接口,如:

pyemb python "somescript.py --arg1 --arg2 arg3"

但是如何在我的python脚本中实现命令python

execexecfile Python函数,但它们不适用于参数和其他命令行内容。

2 个答案:

答案 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非常方便。