如何使用";中的参数执行python脚本;冷冻;Python二进制文件?
我已经构建了一个python二进制文件,其中包含嵌入的冻结模块和一些主脚本。让我们调用二进制如何使用";中的参数执行python脚本;冷冻;Python二进制文件?,python,Python,我已经构建了一个python二进制文件,其中包含嵌入的冻结模块和一些主脚本。让我们调用二进制pyemb 我想使用其他python脚本中的一些冻结模块-似乎最好的解决方案是从pyemb提供接口,如: pyemb python "somescript.py --arg1 --arg2 arg3" 但是如何在python脚本本身中实现命令python Python函数有exec和execfile两种,但它们不能处理参数和其他命令行内容。您可以使用类似于sys.argv的东西来解析命令行参数 impo
pyemb
我想使用其他python脚本中的一些冻结模块-似乎最好的解决方案是从pyemb
提供接口,如:
pyemb python "somescript.py --arg1 --arg2 arg3"
但是如何在python脚本本身中实现命令python
Python函数有
exec
和execfile
两种,但它们不能处理参数和其他命令行内容。您可以使用类似于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
对于更强大的参数解析,我建议使用类似这样的简单方法:
if sys.argv[1] == 'python':
sys.argv.pop(1)
import runpy
runpy.run_path(sys.argv[1], run_name="__main__")
这个模块非常方便。它与
pyemb“somescript.py--arg1--arg2 arg3”有何不同?@pacholik它是一个简单的接口sugar-pyemb
是为了做一些有用的事情而不是运行python脚本,所以python
只是一个接口命令。那么pyemb不是python解释器?当您键入pyemb Python
时,它应该运行真正的Python吗?@pacholik它应该模拟或模拟或部分实现真正的Python行为,特别是关于运行带有参数的脚本的部分,正如问题所述。很抱歉,我不明白。在我的python脚本中,你说的是什么意思?什么python脚本?