使用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