我对Python很陌生。我正在使用Python 2.7,我试图使用python在shell中自动执行命令。我使用Popen运行命令,并使用Popen.communicate()向子进程传递一个参数。我试图执行的命令基本上是一个Java应用程序,当它执行时,它会找到多个主类。我需要输入要执行的main类的索引,为此我使用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()这是我得到的输出
将项目定义从/home/hduser/morey/ Kafka /project info设置为kafka(构建文件:/home/hduser/morey/kafka/)信息将当前项目设置为kafka-java-示例(构建文件:/home/hduser/morey/kafka/) 检测到多个主类,选择一个来运行: 1个TestProducer 2个kafka.examples.SimpleConsumerDemo 3个kafka.examples.KafkaConsumerProducerDemo 输入号码:1 无效编号: java.lang.NumberFormatException:用于输入字符串:"“java.lang.RuntimeException:未检测到主类。在scala.sys.package$.error(package.scala:27)跟踪堆栈跟踪抑制:运行最后的java-示例/编译:运行为完整的输出。error未检测到主类。错误总时间:2,2016年2月3日5:46:31
发布于 2016-02-05 03:34:25
在输入中添加一个换行符:
print proc.communicate('1\n')[0]https://stackoverflow.com/questions/35169585
复制相似问题