【问题标题】:How to provide input for a (fortran) program started with os.system() or another python function?如何为以 os.system() 或其他 python 函数启动的(fortran)程序提供输入?
【发布时间】:2020-09-11 11:46:29
【问题描述】:

我正在创建一个 python 脚本,该脚本使用不同的输入值多次运行 fortran 代码。我尝试使用:os.system('./fortrancode') 运行 fortran 代码。但是,fortran 代码随后会要求新的用户输入。这必须以以下格式在多行(fortran 代码中的多个读取语句)中提供:

[运行fortran代码]

filename_input.txt [按回车键]

filename_output.txt [按回车键]

1 [按回车键]

1 [按回车键]

1 40 [按回车键]

-10 [按回车键]

目前,我无法从我的 python 脚本中为 fortran 代码提供这些输入参数。 (可能是因为 os.system() 正在等待终端输出?)我也尝试过os.system('./fortrancode\nfilename_input.txt\nfilename_output.txt\n1\n1\n1 40\n-180\n'),但这似乎也不起作用。

为fortran代码提供我在python脚本中循环的输入参数的正确方法是什么?

【问题讨论】:

  • 您有两个选择,使用 subprocess.Popen 并与管道通信,或者如果事情变得棘手,请使用 pexpect pexpect.readthedocs.io/en/stable 对于您的情况,使用管道的 Popen 就足够了

标签: python os.system


【解决方案1】:

解决方案 1:

import subprocess 
result = subprocess.Popen(['./fortrancode', 'filename_input.txt','filename_output.txt','1', '1', '1', '40', '-180'])

解决方案 2:

您可以使用F2PY从python调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2013-10-28
    • 2014-11-10
    相关资源
    最近更新 更多