【发布时间】:2011-05-02 19:22:04
【问题描述】:
在 [this thread][1] 上有一个类似的问题。
我想向我的子进程发送一个命令,解释响应,然后发送另一个命令。不得不启动一个新的子进程来完成这件事似乎很可惜,特别是如果 subprocess2 必须执行许多与 subprocess1 相同的任务(例如 ssh、打开 mysql)。
我尝试了以下方法:
subprocess1.stdin.write([my commands])
subprocess1.stdin.flush()
subprocess1.stout.read()
但是如果没有明确的字节参数到read(),程序会在执行该指令时卡住,我无法为read() 提供参数,因为我无法猜测流中有多少字节可用。
我正在运行 WinXP,Py2.7.1
编辑
感谢@regularfry 为我的真实意图提供了最佳解决方案(请阅读他的回复中的 cmets,因为它们与通过 SSH 隧道实现我的目标有关)。 (他/她的答案已被投赞成票。)但是,为了任何以后来回答标题问题的观众的利益,我接受了@Mike Penningtion 的答案。
【问题讨论】:
-
你考虑过使用Pexpect吗?
-
我不熟悉它,但我现在会研究它。 (如果您想留下建议作为问题的答案,它可能正是我正在寻找的答案。)
-
对我来说似乎是不行的。我在 Windows 上。
-
我想我需要
wexpect而不是pexpect。但我找不到难以捉摸的wexpect供下载。任何提示在哪里看?
标签: python stream subprocess pipe