Как заставить программу Python обрабатывать здесь документ? - PullRequest
2 голосов
/ 25 марта 2011

Я написал оболочку Python (pyprog) для запуска программы (someprogram), что-то вроде этого:

...do some setup stuff in Python...
print("run [y=yes]")
CHOICE=input()
...do some setup stuff in Python...
if CHOICE == "y":
  status=subprocess.call(["someprogram"])
  sys.exit(status)

Пользователь хочет использовать сценарий оболочки для запуска программы и подачи ее вводаиспользуя здесь документ, подобный этому:

#!/bin/sh
pyprog > pyprog.log << EOF
y
file1
file2
EOF

Есть ли способ порождать подпроцесс так, чтобы документ здесь работал («y» используется Python input (), а «file1»)и "file2" продолжить как stdin к некоторой программе)?В данный момент Python input () принимает «y», но остальная часть исчезает.

Ответы [ 3 ]

4 голосов
/ 25 марта 2011

Вам необходимо подключить sys.stdin к stdin вызова.

status=subprocess.call(["someprogram"], stdin=sys.stdin)
1 голос
/ 25 марта 2011
import sys
status=subprocess.call(["someprogram"], stdin=sys.stdin)
0 голосов
/ 25 марта 2011

Я использовал что-то подобное несколько раз раньше: https://gist.github.com/887225

По сути, это скрипт на python, который принимает ряд параметров командной строки, выполняет некоторое преобразование в зависимости от того, что было введено, а затем использует os.system () для вызова команды оболочки. В этом примере я вызываю Java, передавая путь к классу, затем запускаю программу ProgramName.jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...