我非常新到Python。我使用Python 2.7
我試圖使用自動化在python
外殼的命令。我使用Popen運行該命令,並使用Popen.communicate()
將參數傳遞給子進程。 我試圖執行的命令基本上是一個Java應用程序,當它執行時,它會查找多個主類。我需要輸入要執行的主類的索引,我使用Popen.communicate()
。在輸出畫面,它表明了輸入的數字,但它拋出java.lang.NumberFormatException: For input string: ""
Popen.communicate()無法正常工作
爲何需要輸入字符串爲空字符串?
這裏是我使用的代碼:
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()
這是輸出我得到
[信息]加載項目定義從 /家/ hduser /莫雷/卡夫卡/工程[ info]設置當前項目爲Kafka (在構建文件中:/ home/hduser/morey/kafka /)[info]將當前項目 設置爲kafka-java-examples(在構建文件中:/ 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的實例/編譯:運行爲全 輸出。 [錯誤](java-examples/compile:run)沒有檢測到主類。 [錯誤]總時間:2秒,完成了2016年2月3日上午05時46分31秒
嘗試發送,而不是〜應變數字,它可能會幫助 print proc.communicate(1)[0] – AlokThakur
@AlokThakur我已經嘗試過,但Popen.communicate()只能接受一個字符串參數。 – aladeen
你有沒有考慮嘗試發送一個換行符作爲你的輸入的一部分? ''1 \ n''也許。 – Amber