【发布时间】:2014-01-20 14:27:38
【问题描述】:
假设我想在 Windows 批处理文件中调用程序 theprogram。代码如下所示:
exit | theprogram arg1
我已经测试过了,效果很好,非常感谢!
现在,策略发生了重大变化,我必须在 python 脚本中调用 theprogram。为此,我使用 subprocess 模块。我明白了:
subprocess.call(['theprogram', arg1])
但要使其正常工作,我需要使用 exit 语句对其进行管道传输,就像我在批处理文件中所做的那样。当然,这不起作用工作
subprocess.call(['exit | theprogram', arg1])
有谁知道我如何正确地将这个 exit 语句通过管道传递给 theprogram 的输入?
非常感谢!
【问题讨论】:
-
我知道这与这个问题没有严格的关系,但是你为什么在你的批处理文件中使用
exit命令呢?为什么不只是python theprogram arg1? -
是的,请解释为什么您需要将不存在的
exit输出通过管道传输到您的程序中。我怀疑您使用<nul theprogram arg1会得到相同的结果 -
我要执行的程序其实是sqlplus。当您启动它时,它会保持打开状态,等待输入命令,直到您要求它退出(通过输入 exit 输入)。我不想每次启动我的python脚本时手动输入这个exit,我希望它一旦完成就终止,因此管道:)
-
不应该是
echo exit | sqlplus ...吗? -
echo用于将内容打印到标准输出。如果您希望sqlplus接收字符串exit作为其输入,您应该使用echo exit | sqlplus。exit | sqlplus有效,因为exit本质上是一个空操作,用于将文件结尾发送到sqlplus— 正如 @dbenham 正确评论的那样。
标签: python batch-file subprocess