我正在用 Python 3 编写一个(某种程度上)模块化应用程序,我想从中运行任意程序,该程序是在运行时指定的,而不一定是 python 脚本。
所以我用例如
subprocess.call([spam, "-i", eggs, "-o", ham])
If spam
是一个Python脚本,用shebang来python3
和可执行权限,我得到
OSError: [Errno 8] Exec format error
if I
subprocess.call(["python3", spam, "-i", eggs, "-o", ham])
效果很好。
你知道为什么吗?我怎样才能跑spam
没有指定python3
?
你需要使用shell=True
,并且您需要将数组转换为命令字符串,如下所示:
subprocess.call(' '.join([spam, "-i", eggs, "-o", ham]), shell=True)
这将调用 shell 而不是直接命令,并且 shell 应该能够处理 shebang。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)