Я хочу вызвать программу на Фортране из python. Я использую оператор Popen из подпроцесса следующим образом:
p = Popen(['./finput'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
Затем я хочу отправить некоторые имена файлов в программу fortran. Программа на Фортране читает их со стандартного ввода, а затем открывает файлы.
Если я использую что-то вроде:
p_stdout = p.communicate(input='file1.dat\nfile2.dat\n')[0]
все хорошо и программа на фортране работает как положено.
Однако я хочу дать имена файлов в качестве переменной из программы Python.
Так что, если я использую
p_stdout = p.communicate(input=file1+'\n'+file2+'\n')[0]
моя программа на фортране не может открыть имена файлов. Проблема в том, что строка, которую читает Фортран, выглядит так
f i l e 1 . d a t
с пустым символом в качестве первого символа и каким-то странным символом между каждым правильным символом. К сожалению, это проявляется только в том случае, если вы печатаете каждый символ строки по отдельности. Если вы просто напечатаете имя файла с
print*,file1
вы получите
file1.dat
Итак, мой вопрос: почему Python вводит эти странные символы в связь с дочерним процессом и, что более важно, как мне избавиться от?
большое спасибо