【发布时间】:2015-09-04 16:26:02
【问题描述】:
代码如下:
fh = tempfile.NamedTemporaryFile(delete=False,suffix = '.py')
stream = io.open(fh.name,'w',newline='\r\n')
stream.write(unicode(script))
stream.flush()
stream.close()
proc = subprocess.Popen(
[path,fh.name],
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
proc.stdin.close()
proc.stderr.close()
out = proc.stdout.readline()
print out
script 是一个包含子进程代码的字符串,在本例中是一个简单的 hello world。由于它具有 unix 文件结尾,因此我必须使用 io.open 才能为 Windows 正确编写它。 path 是我机器上 python.exe 的路径。该文件已生成,在记事本中看起来很好:
def main():
print 'hello world'
但是,当我运行程序时,子进程执行并且什么都不做。 它不是可执行路径的问题,我已经用其他程序对其进行了测试,因此它必须与临时文件本身或其中的文本有关。 Delete 设置为 false 以便检查文件的内容以进行调试。这段代码有什么明显的错误吗?我对使用 Popen 有点陌生。
【问题讨论】:
标签: python windows subprocess