【问题标题】:How can I write output of “java -version” to a text file using python? [duplicate]如何使用 python 将“java -version”的输出写入文本文件? [复制]
【发布时间】:2017-09-22 06:47:51
【问题描述】:

我是新手,我想把java版本的输出写在一个文件文本中。

我在看到的另一篇文章中使用了这个:

import subprocess

with open('C:\Python27\ping.txt','w') as out:
    out.write(subprocess.check_output("ping www.google.com"))

这很奏效,将“ping www.google.com”的输出写入文本文件。

我想如果我只是将“ping www.google.com”更改为“java -version”,一切都会解决。

像这样:

import subprocess

with open('C:\Python27\java.txt','w') as out:
    out.write(subprocess.check_output("java -version"))

但这对我不起作用,这只是将“java -version”的输出打印到控制台,并没有将其写入文本文件中。

谁能帮帮我?

【问题讨论】:

标签: python python-2.7 subprocess


【解决方案1】:

你可以尝试使用stderr:

from subprocess import Popen, PIPE, STDOUT

with open('C:\Python27\java.txt','w') as out:
  cmd = 'java -version'
  p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
  out.write(p.stderr.read())

【讨论】:

  • 这里没有理由诉诸Popen,你可以轻松地将stderr=subprocess.STDOUT传递给subprocess.check_output
  • @JonClements 我相信好的做法是在任何情况下都使用Popen,因为它是非阻塞的。但你是对的 - stderr=subprocess.STDOUT 就足够了。
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2023-03-11
  • 2020-10-01
  • 2016-03-18
相关资源
最近更新 更多