2015-02-12 3 views
0

У меня есть питон скрипт, я хотел бы, чтобы запустить из сценария Баша таким образом:Python интерпретатор команд

#!/bin/bash 
python -c "$(< input_file)" &> output_file 

В сценарии питона У меня есть несколько различных методов, поэтому входной файл содержит такие вещи, как:

from script import *; method_1(); method_2(); 

проблема заключается в том, в обоих методов, они имеют input() метод, который требует ввода данных пользователем (это не может быть изменено).

Так как я могу передать аргумент в input_file (какой-то новой строки аргумента), так что она передается по методу input() в method_1() или method_2()?

+0

Любые аргументы командной строки питона, следующего за аргумент '-c' интерпретируется как аргументы для передачи кода python (т. е. какой бы код ни находился в вашем' input_file'). Таким образом, вы можете сделать код в своих аргументах чтения 'input_file' из командной строки, а затем отправить его, как вам нравится, перед частью' &> output_file'. – dg99

ответ

1

удобный способ сделать это с «здесь документ»:

$ cat myscript 
#!/bin/bash 
python -c "$(< input_file)" &> output_file << END 
3 
4 
END 

Здесь в себя содержащиеся теста:

$ cat input_file 
height = input("Height:\n") 
width = input("Width:\n") 
print "Area: ", height*width 

$ bash myscript 
(no output) 

$ cat output_file 
Height: 
Width: 
Area: 12 
0

Я считаю, что функция input просто считывает со стандартного ввода.

Таким образом, вы должны просто иметь возможность передавать (или перенаправлять) данные на этот вызов python для input, чтобы подобрать, я бы подумал.

Смежные вопросы