【问题标题】:Why is the stdout empty when running "python --version" from groovy?为什么从 groovy 运行“python --version”时标准输出为空?
【发布时间】:2019-05-23 16:08:36
【问题描述】:

我目前正在为 Apache PLC4X 项目编写飞行前检查脚本。在那里我检查是否存在所需的第三方工具及其版本。

如果我在命令行上运行“python --version”,我会得到很好的响应。

但是,如果我在 Groovy 中运行它:

print "Detecting Python version: "
def output = ("python --version").execute().text

我只是得到一个空字符串。 所有其他工具均未显示此行为。所有其他人在“输出”中都有控制台输出。

如何进行我想做的检查?我做错了什么?

【问题讨论】:

  • 您的意思是println output?您已将结果存储到一个变量中,所以我不希望任何内容输出到标准输出
  • @Sheldore 它是 Groovy,正如标题、标签和正文中多次提到的:D
  • @AdamSmith:抱歉我的疏忽。它被标记为 python,所以我认为它仍然必须遵循基本的语法规则
  • 这显然只是脚本的一部分......是的:我是用 Groovy 编写的:在此处查看完整的脚本:github.com/apache/plc4x/blob/develop/src/main/script/…

标签: groovy apache-plc4x


【解决方案1】:

不要假设您在终端上看到的所有内容都来自标准输出。

信息性消息经常被发送到标准错误,以避免它们被任何处理管道捕获(这就是早在 UNIX 时代就创建两个通道的原因)。

【讨论】:

  • 好电话。事实上python -V 确实打印到标准错误。
  • 但是我也检查了那个的内容......但会仔细检查......感谢指针。
  • 原来我必须使用 stdErr 而不是 stdout ...现在一切正常。会想到很多事情,但不是将这记录到stderr。谢谢指点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2015-05-21
  • 2019-11-22
相关资源
最近更新 更多