Я хочу выполнить файл jar из python с помощью команды popen из подпроцесса. Файл jar берет текст из файла input.txt и записывает результат xml в файл output.txt. Когда я выполняю свой код, он не ждет, пока файл jar не будет записан в файл output.txt, поэтому возвращаемая строка пуста. Файл jar записывается в файл output.txt после того, как функция возвращает пустой результат.
inputFile = open(r"input.txt","w")
inputFile.write(inputstring)
subprocess.Popen("java -jar ChemicalTagger.jar")
outputFile = open(r"output.txt.","r")
return outputFile.read()
Итак, я попробовал эти два способа:
- Использование команды вызова вместо Popen
- Используя команду cumminicate следующим образом:
def callChemTagger(inputstring):
inputFile = open(r"input.txt","w")
inputFile.write(inputstring)
p = subprocess.Popen("java -jar ChemicalTagger.jar")
p.communicate()
outputFile = open(r"output.txt.","r")
return outputFile.read()
В обоих вариантах он ждет после выполнения команды, но в конце это отображается в консоли:
line 1:0 no viable alternative at input '<EOF>'
Successfully wrote to the file.
<?xml version="1.0"?>
<Document />
Первая строка - это сообщение об ошибке. Вторая строка - это сообщение об успешном завершении работы с файлом jar, а затем он возвращает пустой документ xml, так как не было введенной строки.
Буду рад вашей помощи!