我想从 python 调用一个 Fortran 程序。我使用来自子进程的 Popen 语句,如下所示:
p = Popen(['./finput'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
然后我想将一些文件名发送到 fortran 程序。fortran 程序从标准输入读取它们,然后打开文件。如果我使用类似的东西:
p_stdout = p.communicate(input='file1.dat\nfile2.dat\n')[0]
一切都很好,fortran 程序按预期工作。但是,我想在 python 程序中将文件名作为变量提供。所以如果我使用
p_stdout = p.communicate(input=file1+'\n'+file2+'\n')[0]
我的 fortran 程序无法打开文件名。问题是fortran读取的字符串看起来像这样
f i l e 1 . d a t
一个空白字符作为第一个字符,每个正确字符之间都有一些奇怪的字符。不幸的是,这仅在您单独打印字符串的每个字符时才会出现。如果你只是打印文件名
print*,file1
你得到
file1.dat
所以我的问题是,为什么 python 将这些奇怪的字符放入与子进程的通信中,更重要的是,我该如何摆脱?
非常感谢