【发布时间】:2015-05-19 17:51:05
【问题描述】:
我收到一个字符串中的脚本,并试图找到一种使用 python 的子进程模块执行它的方法。例如
import subprocess
script = """#!/usr/bin/python
print "inside script"
"""
subprocess.Popen(script)
这会引发 OSError: say there is no such file or directory,这很公平,因为我认为它试图查找命令名称。
然后我尝试了subprocess.Popen(script, shell=True),它仅适用于 shell 命令并且完全忽略了 #!在脚本的顶部。有什么方法可以让 suprocess 运行我存储在字符串中的脚本,就像它的可执行文件一样?
【问题讨论】:
-
将字符串保存到文件中,然后执行实际的脚本?
-
是的,这是我最后的选择。希望我可能错过了一些东西,并且有一些其他的子流程魔法可以实现这一点。
-
你想达到什么目的?
-
我正在尝试模拟一些外部流程进行测试。有人可以将字符串中的脚本传递给我的模拟函数,我可以执行该字符串而不是实际过程。例如有人可以说 mock git as sleep(60)。
标签: python shell subprocess