使用 shebang 通过 subprocess.call 执行 python 脚本
我正在用 Python 3 编写一个(某种程度上)模块化应用程序,我想从中运行任意程序,该程序是在运行时指定的,不一定是 python 脚本。
所以我使用例如,
subprocess.call([spam, "-i", eggs, "-o", ham])
如果 spam
是一个 python 脚本,shebang 为 python3
和可执行权限,我知道
OSError: [Errno 8] Exec format error
它是否
subprocess.call(["python3", spam, "-i", eggs, "-o", ham])
工作正常。
你知道为什么吗?如何在不指定 python3
的情况下运行 spam
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用shell=True,并且需要将数组转换为命令字符串,如下所示:
这将调用shell而不是直接命令,并且shell应该能够处理舍邦。
You need to use
shell=True
, and you need your array to be turned into a command string, like this:This will invoke the shell instead of the direct command, and the shell should be able to handle the shebang.
尝试
Try