【问题标题】:Running a subprocess in a script and based on the output, continuing the execution of the script在脚本中运行子进程并根据输出,继续执行脚本
【发布时间】:2020-10-13 17:46:52
【问题描述】:

我正在编写一个脚本,它使用子进程启动服务器,然后继续执行脚本。 这是我当前的代码

cmd = "some command"
process = check_output(cmd, shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

time.sleep(70)
print(process.returncode)

我正在使用 time.sleep 来延迟脚本中下一行的执行,以便服务器启动,但这效率不高。

服务器启动后,我在控制台中得到以下输出:INFO:bridge_serving! 有没有办法我可以检查控制台的输出,一旦它说INFO:bridge_serving!,脚本的下一行应该继续运行。

【问题讨论】:

  • 请按照您的原样显示代码。您发布的内容有错误的缩进,所以不能完全是您正在运行的内容。
  • 抱歉,我已经做了必要的修改

标签: python cmd subprocess popen


【解决方案1】:

我猜你希望进程保持打开/运行,同时不断检查输出。

subprocess.check_output() 在处理完成之前不会返回任何内容。

您可能希望保持进程打开,并在创建输出时使用管道读取输出。

请参阅:https://stackoverflow.com/a/4760517/3389859 了解更多信息。

【讨论】:

  • 我认为这可能是一个比这更难的问题。您想捕获 一些 输出,但之后您希望能够忽略它并继续进行其他处理,同时不希望孩子阻止写入因为没有任何东西从它正在写入的管道中读取。我想不出一个直截了当的方法。
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 2014-12-17
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多