Нужна помощь со следующим кодом. Я хочу передать строковые элементы из трех списков в качестве входных данных для java-программы, которую я вызываю в своем скрипте python. Вот что я сделал до сих пор -
import subprocess
from subprocess import PIPE
from subprocess import Popen
amount = ['23.5', '12.5', '56.0', '176.1']
invoice_no = ['11290', '12892', '12802', '23489']
date = ['2/3/19', '12/30/17', '04/21/2018', '8/12/17', '12/21/18']
## problem is proc.communicate(). I am currently passing only invoice_no[i] as input.
for i in range (0, len(invoice_no)):
proc = subprocess.Popen(['java', '-jar', '/data/python/xyz.jar'],stdin=PIPE,stdout=PIPE, stderr=STDOUT)
q = proc.communicate(input = invoice_no[i])
print(q)
## But I want to pass amount and date as input as well.
## I dont know the syntax for that. I also want output as 1 or 0 i.e success or failure. Does anyone know syntax for this?
Большинство вопросов, которые я видел, передают одну строку в качестве входных данных. Но это не то, что я ищу. Даже официальный документ подпроцесса не поможет узнать, как передать синтаксис множественных входов. Ссылки - запуск java-программы из скрипта python
Как выполнить java-программу с использованием python, учитывая входы и выходы как
Не совсем уверен. Я новичок в python. Я смог достичь этого после рассмотрения многих вопросов и документов.




Так как я нашел ответ. Я думал, что опубликую это здесь. Может кому пригодится -
import subprocess
from subprocess import PIPE
from subprocess import Popen
amount = ['23.5', '12.5', '56.0', '176.1']
invoice_no = ['11290', '12892', '12802', '23489']
date = ['2/3/19', '12/30/17', '04/21/2018', '8/12/17', '12/21/18']
for i in range (0, len(invoice_no)):
proc = subprocess.Popen(['java', '-jar', '/data/python/xyz.jar', invoice_no[i], date[i], amount[i]],stdin=PIPE,stdout=PIPE, stderr=PIPE)
output = proc.communicate()[0] ## this will capture the output of script called in the parent script.
Разве аргумент
-jarне должен быть отдельным параметром для Popen?