编程语言
首页 > 编程语言> > 使用shebang使用subprocess.call执行python脚本

使用shebang使用subprocess.call执行python脚本

作者:互联网

我正在用Python 3编写一个(某种程度上)模块化的应用程序,我想从它运行任意程序,表示程序是在运行时指定的,而不一定是python脚本.

所以我用例如,

subprocess.call([spam, "-i", eggs, "-o", ham])

如果垃圾邮件是一个python脚本,shebang到python3和可执行权限,我得到

OSError: [Errno 8] Exec format error

如果我

subprocess.call(["python3", spam, "-i", eggs, "-o", ham])

它工作正常.

你知道为什么吗?如何在不指定python3的情况下运行垃圾邮件?

解决方法:

您需要使用shell = True,并且需要将您的数组转换为命令字符串,如下所示:

subprocess.call(' '.join([spam, "-i", eggs, "-o", ham]), shell=True)

这将调用shell而不是直接命令,shell应该能够处理shebang.

标签:python,python-3-x,subprocess,shebang
来源: https://codeday.me/bug/20190730/1577927.html