gpt4 book ai didi

Python:使用子进程调用 Fortran 并通过通信发出命令

转载 作者:行者123 更新时间:2023-12-01 06:06:38 29 4
gpt4 key购买 nike

我想从 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 将这些奇怪的字符放入与子进程的通信中,更重要的是,我如何摆脱这些字符?

非常感谢

最佳答案

听起来您的 Fortran 可能正在获取 Unicode,您使用的是 Python 3 吗?如果是这样,则构造要传递的字符串,然后使用 string.encode()

关于Python:使用子进程调用 Fortran 并通过通信发出命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684922/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com