1

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はこれらの奇妙な文字を子プロセスとの通信に入れているのですか?

どうもありがとう

4

1 に答える 1

2

Fortran が Unicode を取得しているように聞こえますが、Python 3 を使用していますか? その場合は、渡される文字列を作成してから文字列を使用します.encode()

于 2011-10-07T09:49:31.690 に答える