I am trying to use Python to automate a process that involves calling a Fortran executable and passing some user inputs. I spent several hours reading similar questions and trying different things, but I was out of luck. Here is a minimal example to show what I tried in the past
import subprocess
ps = subprocess.Popen('fortranExecutable',shell=True,stdin=subprocess.PIPE)
ps.communicate('argument 1')
ps.communicate('argument 2')
However, when I try to run this, I get the following error:
File "gridGen.py", line 216, in <module>
ps.communicate(outputName)
File "/opt/apps/python/epd/7.2.2/lib/python2.7/subprocess.py", line 737, in communicate
self.stdin.write(input)
ValueError: I/O operation on closed file
Any suggestions or pointers are welcome.
EDIT:
When I call the Fortran executable, it asks for user input as follows:
fortranExecutable
Enter name of input file: 'this is where I want to put argument 1'
Enter name of output file: 'this is where I want to put argument 2'
Somehow I need to run the executable file, wait until it asks to enter the user, and then put this input.