Python から Fortran プログラムを呼び出したい。サブプロセスの Popen ステートメントを次のように使用します。
p = Popen(['./finput'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
次に、いくつかのファイル名を fortran プログラムに送りたいと思います。Fortran プログラムは stdin からそれらを読み取り、ファイルを開きます。次のようなものを使用する場合:
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はこれらの奇妙な文字を子プロセスとの通信に入れているのですか?
どうもありがとう