java - Popen.communicate() 无法正常工作

标签 java python python-2.7 shell popen

我对 Python 还很陌生。我正在使用Python 2.7 我正在尝试使用 python 在 shell 中自动执行命令。我使用 Popen 运行命令,并使用 Popen.communicate() 将参数传递给子进程。 。 我尝试执行的命令基本上是一个 Java 应用程序,当它执行时,它会找到多个主类。我需要输入要执行的主类的索引,我使用 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]

关于java - Popen.communicate() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169585/

相关文章:

java - Java 中的嵌套 If then 语句(基本)

java - 使用 ant 仅为给定类(java 文件)的依赖类创建 javadoc

python - 如何将包含外键模型关系的 Django 模型导出到组合文本文件中

opencv - 人脸识别。 OpenCV+Python+ffnet

java - 在没有 GUI 的情况下在退出的 Java 程序中设置热键

java - 制作第二个线程时遇到问题

python - 如何在 KNN 中的 minkowski 度量中设置 p < 1?

python - Django 模板标签 forloop

python - Scrapy 只处理 iterable 中的前 10 个请求

python - 使用 boto3 列出具有特定应用程序标签的自动缩放组名称