You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python执行带输入文件重定向的Fortran代码Unix命令

实现方案

直接使用Python标准库subprocess即可实现需求,无需安装第三方依赖,也不需要使用F2PY做代码适配,完全保留原Fortran程序的运行逻辑(包括它自主写输出文件的行为),有两种常用写法:

写法1:无shell开销的安全写法(推荐)

直接将打开的输入文件作为子进程的标准输入传入,和shell重定向< file的行为完全一致,不需要启动额外shell进程,没有命令注入风险:

import subprocess

# 打开输入文件,绑定到Fortran程序的标准输入
with open("file", "rb") as f:
    subprocess.run(
        ["./code"],
        stdin=f,
        check=True
    )

参数说明:

  • ["./code"]:以列表形式传递可执行文件路径,避免shell解析的特殊字符转义问题
  • stdin=f:将打开的文件句柄绑定到子进程的标准输入流,等价于shell的<重定向
  • check=True:子进程返回非0退出码时主动抛出CalledProcessError,不需要的话可以移除

运行完成后,原Fortran程序生成的所有输出文件会和直接在命令行执行./code < file时完全一致,你原有读取输出文件的代码不需要做任何修改。

写法2:直接复用shell重定向语法(最简洁)

如果想要完全照搬原命令写法,可以开启shell=True让系统shell直接解析整条命令,代码最短:

import subprocess

subprocess.run("./code < file", shell=True, check=True)

注意:如果file的文件名是动态拼接的变量,不建议用这个写法,避免命令注入风险;如果命令是固定写死的,该写法完全可用。

内容的提问来源于stack exchange,提问作者BitterDecoction

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:36:57