美文网首页
利用Python的subprocess调用Fortran

利用Python的subprocess调用Fortran

作者: 沐辰老爹 | 来源:发表于2018-09-29 16:37 被阅读0次

    目前有个需求,即由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的就是子进程执行完毕的输出结果
    

    相关文章

      网友评论

          本文标题:利用Python的subprocess调用Fortran

          本文链接:https://www.haomeiwen.com/subject/wulboftx.html