Общайтесь с Java программой из Python - PullRequest
0 голосов
/ 05 марта 2012

Моя программа на Python - "check.py"

import os.path,subprocess
from subprocess import STDOUT,PIPE

def compile_java(java_file):
    subprocess.check_call(['javac', java_file])

def execute_java(java_file):
    java_class,ext = os.path.splitext(java_file)
    cmd = ['java', java_class]
    proc = subprocess.Popen(cmd,stdout=PIPE,stdin-PIPE,stderr=STDOUT)
    stdout,stderr = proc.communicate("viraj")
    print stdout

Моя программа на Java - "Test.java"

import java.util.*;
class Test
{
    public static void main(String args[])
    {
        System.out.println("Tested Successfully");
        Scanner t=new Scanner(System.in);
        System.out.println("Enter the string");
        String str=t.nextLine();
            System.out.println("Hello "+str);
       }
}

Здесь, в check.py, я передаюпараметр viraj как proc.communicate("viraj") и, следовательно, мой вывод

Успешно протестировано
Введите строку
Здравствуйте, viraj

Однако я нехочу передать параметр.Вместо этого я хочу получить вывод как

Успешно протестировано
Введите строку

, а затем после ввода строки как viraj она должна быть напечатана как Hello viraj Как я могу это сделать?

1 Ответ

2 голосов
/ 05 марта 2012

Для взаимодействия с Java-программой просто вызовите communicate() без аргументов.

def execute_java(java_file):
    java_class,ext = os.path.splitext(java_file)
    cmd = ['java', java_class]
    proc = subprocess.Popen(cmd)
    proc.communicate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...