利用Python的subprocess调用Fortran

目前有个需求,即由python的subprocess模块调用fortran语言编译的二进制执行文件;

其中fortran文件需要读取来自屏幕的输入信息,一直苦寻方法而不得其门,终于在搜索引擎的帮助下,找到了这个答案,解决了我所有的问题.

假如fortran文件如下:

program main

character(80)    :: param1, param2

write(*,*) 'Now read the first parameters!'
read(*, '(a)') param1
write(*,*) 'Now read the second parameters!'
read(*, '(a)') param1
...
下面是各种操作
...
# 同时假设我们利用gfortran将程序编译为foo

那么对需要两个参数的执行文件,无法在跟在命令后面直接输入参数,需要使用标准输入与子进程通信进行传递。

# 参考答案中内容
import subprocess
proc = subprocess.Popen([exec_dir], stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                        stderr=subprocess.STDOUT)
param1 = 'apwieurpqwuier wer '
param2 = 'awe;foui awef; '
input_cmd = f'{param1}\n{param2)\n'
pout = proc.communicate(input=input_cmd.encode('utf8'))
# 好了, 现在我们已经向子进程传递了需要的参数
# pout的就是子进程执行完毕的输出结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,273评论 0 10
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 8,067评论 0 27
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,664评论 0 5
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 4,135评论 0 5
  • 现在,游戏也许是许多人生活中必不可少的吧?玩游戏也许是少年一时兴起,钻入网吧,游戏厅,伴着星星月亮,浸泡在那个...
    諾悯燃阅读 579评论 0 1

友情链接更多精彩内容