Передать множественный список параметров из python в java-программу и получить код возврата с помощью subprocess.communicate - PullRequest
0 голосов
/ 22 января 2019

Нужна некоторая помощь со следующим кодом - я хочу передать строковые элементы из трех списков в качестве входных данных для 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 с учетом входных и выходных данных

1 Ответ

0 голосов
/ 23 января 2019

Так как я нашел ответ. Я думал, что выложу это здесь. Может быть, кто-то найдет это полезным -

   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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...