Você pode usar um script expect
para alimentar um determinado arquivo de entrada em um determinado script python:
ian.expect:
set script [lindex $argv 0]
set input [lindex $argv 1]
set inputfh [open $input r]
spawn -noecho python $script
while {[gets $inputfh line] != -1} {
expect {
-re "(.+)" {
send "$line\n"
}
}
}
close $inputfh
interact
ian.py:
name = input("Enter your name: ")
print("Hello", name)
input.txt:
"Jeff"
Para executar qualquer script python com um determinado arquivo de entrada, execute:
expect -f ian.expect ian.py input.txt
e você terá:
$ expect -f ian.expect ian.py input.txt
Enter your name: "Jeff"
('Hello', 'Jeff')
Eu não sou um hacker TCL ou Expect, então gostaria de receber melhorias no script.
Exemplo de arquivo e script com duas entradas:
input.txt:
"Jeff"
14
ian.py:
name = input("Enter your name: ")
print("Hello", name)
age = input("Your age? ")
print("So, you are already " + str(age) + " years old, " + name + "!")
corrida de amostra:
$ expect -f ian.expect ian.py input.txt
Enter your name: "Jeff"
('Hello', 'Jeff')
Your age? 14
So, you are already 14 years old, Jeff!