這個工作從/斌/ bash命令行...蟒蛇2.7和子()不及格ARGS正確
$ /usr/bin/kafka-console-producer --topic AsIs-CalculatedMeasure --broker-list wrlmr4:9092 < /tmp/dataFile
'[' 0 -eq 0 ']'
當我調用Python的子進程,它扼流圈我的論點,我已經改變了ARG命令,它總是會導致第一個「精氨酸」
kafkaProducer='/usr/bin/kafka-console-producer'
cmdLineArgs = []
cmdLineArgs.append(kafkaProducer)
cmdLineArgs.append("""--broker-list wrlmr4:9092""")
cmdLineArgs.append("""--topic %s""" % ('AsIs-CalculatedMeasure'))
print 'Calling subprocess(%s)'%(cmdLineArgs)
cmd = subprocess.Popen(cmdLineArgs, stdin=subprocess.PIPE)
# now write the input file to stdin ...
cmd.stdin.write(payload)
Calling subprocess(['/usr/bin/kafka-console-producer', '--broker-list wrlmr4:9092', '--topic AsIs-CalculatedMeasure'])
標準錯誤的扼流圈:券商名單wrlmr4:9092是不是一個公認的選項
子流程似乎是從「--broker-list」中吃掉「 - 」。我切換了arg順序,它給出了同樣的錯誤「 - 」被吃掉了,我也嘗試過「 - 」到no無濟於事。
使用['shlex.split()'](https://docs.python.org/2/library/shlex.html#shlex.split)來分割和引用命令行參數,不要這樣做手。不要仔細查看你的代碼,我敢打賭,這就是你的問題所在。 –
'--broker-list'和'--topic'選項可能在邏輯上連接到它們的值,但該選項和值仍然應該是單獨的命令行參數。 – user2357112