我需要在 Python 中启动一个 Python 脚本并保持它。
出于论证的目的,假设有一个名为 slave.py 的程序
if __name__=='__main__':
done = False
while not done:
line = raw_input()
print line
if line.lower() == 'quit' or line.lower() == 'q':
done = True
break
stringLen = len(line)
print "len: %d " % stringLen
程序“slave.py”接收一个字符串,计算字符串的输入长度,并使用打印语句将长度输出到标准输出。
它应该一直运行,直到我给它一个“退出”或“q”作为输入。
同时,在另一个名为“master.py”的程序中,我将调用“slave.py”
# Master.py
if __name__=='__main__':
# Start a subprocess of "slave.py"
slave = subprocess.Popen('python slave.py', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
x = "Hello world!"
(stdout, stderr) = slave.communicate(x)
# This works - returns 12
print "stdout: ", stdout
x = "name is"
# The code bombs here with a 'ValueError: I/O operation on closed file'
(stdout, stderr) = slave.communicate(x)
print "stdout: ", stdout
但是,我使用 Popen() 打开的 slave.py 程序只需要一个communicate() 调用。它在一个通信()调用之后结束。
对于这个例子,我想让 slave.py 作为客户端-服务器模型中的服务器继续运行,直到它通过通信接收到“quit”或“q”字符串。我将如何使用 subprocess.Popen() 调用来做到这一点?