String Python como argumento de arquivo para subprocesso

Estou tentando passar um arquivo para um programa (MolPro) que inicio como subprocesso com Pytho

Geralmente leva um arquivo como argumento, como este no console:

path/molpro filename.ext

Where filename.ex contém o código a ser executado. Como alternativa, um script bash (o que estou tentando fazer, mas em Python):

#!/usr/bin/env bash
path/molpro << EOF
    # MolPro code
EOF

Estou tentando fazer o acima em Python. Eu tentei isso:

from subprocess import Popen, STDOUT, PIPE
DEVNULL = open('/dev/null', 'w')  # I'm using Python 2 so I can't use subprocess.DEVNULL
StdinCommand = '''
    MolPro code
'''

# Method 1 (stdout will be a file)
Popen(['path/molpro', StdinCommand], shell = False, stdout = None, stderr = STDOUT, stdin = DEVNULL)
# ERROR: more than 1 input file not allowed

# Method 2
p = Popen(['path/molpro', StdinCommand], shell = False, stdout = None, stderr = STDOUT, stdin = PIPE)
p.communicate(input = StdinCommand)
# ERROR: more than 1 input file not allowed

ntão, eu tenho certeza que a entrada não parece suficiente com um arquivo, mas mesmo olhando para Python - Como passar uma seqüência de caracteres para subprocess.Popen (usando o argumento stdin Não consigo encontrar o que estou fazendo de errado.

Eu prefiro não:

Escreva a string em um arquivo realset shell para True (E não posso alterar o código MolPro)

Muito obrigado por qualquer ajuda

Update: se alguém estiver tentando fazer a mesma coisa, se você não quiser esperar o trabalho terminar (como ele não retorna nada, de qualquer maneira), usep.stdin.write(StdinCommand) em vez de

questionAnswers(2)

yourAnswerToTheQuestion