Popen.communicate() 无法正常工作
Popen.communicate() not working properly
我是 Python 的新手。我正在使用 Python 2.7
我正在尝试使用 python
自动执行 shell 中的命令。我 运行 使用 Popen 的命令,我正在使用 Popen.communicate()
将参数传递给子进程。
我要执行的命令基本上是一个 Java 应用程序,当它执行时,它会找到多个主要的 classes。我需要输入要执行的main class的索引,为此我使用Popen.communicate()
。在输出屏幕中,它显示输入了数字,但抛出 java.lang.NumberFormatException: For input string: ""
为什么将输入字符串作为空字符串?
这是我使用的代码:
import sys
from subprocess import Popen, PIPE, STDOUT
cmd = ["sudo", "./sbt", "project java-examples", "run"]
proc = Popen(cmd, shell=False,stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print proc.communicate('1')[0]
proc.stdin.close()
这是我得到的输出
[info] Loading project definition from
/home/hduser/morey/kafka/project [info] Set current project to Kafka
(in build file:/home/hduser/morey/kafka/) [info] Set current project
to kafka-java-examples (in build file:/home/hduser/morey/kafka/)
Multiple main classes detected, select one to run:
[1] TestProducer
[2] kafka.examples.SimpleConsumerDemo
[3] kafka.examples.KafkaConsumerProducerDemo
Enter number: 1
Invalid number: java.lang.NumberFormatException: For
input string: "" java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27) [trace] Stack trace suppressed: run last java-examples/compile:run for the full
output. [error] (java-examples/compile:run) No main class detected.
[error] Total time: 2 s, completed Feb 3, 2016 5:46:31 AM
在您的输入中添加换行符:
print proc.communicate('1\n')[0]
我是 Python 的新手。我正在使用 Python 2.7
我正在尝试使用 python
自动执行 shell 中的命令。我 运行 使用 Popen 的命令,我正在使用 Popen.communicate()
将参数传递给子进程。
我要执行的命令基本上是一个 Java 应用程序,当它执行时,它会找到多个主要的 classes。我需要输入要执行的main class的索引,为此我使用Popen.communicate()
。在输出屏幕中,它显示输入了数字,但抛出 java.lang.NumberFormatException: For input string: ""
为什么将输入字符串作为空字符串?
这是我使用的代码:
import sys
from subprocess import Popen, PIPE, STDOUT
cmd = ["sudo", "./sbt", "project java-examples", "run"]
proc = Popen(cmd, shell=False,stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print proc.communicate('1')[0]
proc.stdin.close()
这是我得到的输出
[info] Loading project definition from /home/hduser/morey/kafka/project [info] Set current project to Kafka (in build file:/home/hduser/morey/kafka/) [info] Set current project to kafka-java-examples (in build file:/home/hduser/morey/kafka/)
Multiple main classes detected, select one to run:
[1] TestProducer
[2] kafka.examples.SimpleConsumerDemo
[3] kafka.examples.KafkaConsumerProducerDemoEnter number: 1
Invalid number: java.lang.NumberFormatException: For input string: "" java.lang.RuntimeException: No main class detected. at scala.sys.package$.error(package.scala:27) [trace] Stack trace suppressed: run last java-examples/compile:run for the full output. [error] (java-examples/compile:run) No main class detected. [error] Total time: 2 s, completed Feb 3, 2016 5:46:31 AM
在您的输入中添加换行符:
print proc.communicate('1\n')[0]