【问题标题】:How do I run AVL (a binary) from a python script using the subprocess module?如何使用 subprocess 模块从 python 脚本运行 AVL(二进制文件)?
【发布时间】:2017-05-31 15:25:01
【问题描述】:

我正在尝试在AVL (Athena Vortex Lattice) 中编写一系列运行脚本,这是一个用于设计机翼和其他升力表面的涡流晶格代码。

我将二进制文件存储在 ~/bin/.通常,您在终端中运行 AVL,然后输入命令。典型的命令是:

  1. 加载 ~/path/avlexamplefile.avl
  2. 操作
  3. A A 5
  4. X
  5. FS
  6. 返回
  7. 退出

其中,加载 .avl 输入文件,进入操作菜单,将迎角设置为 5 度,执行计算,将力打印到输出文件,退出操作菜单,然后退出程序。

我正在尝试使用 subprocess 模块从 python 脚本运行 AVL,代码如下:

    import subprocess as sp
    avl = sp.Popen(['~/bin/avl3.35'],
           stdin=sp.PIPE,stdout=None, 
           stderr=None, 
           universal_newlines=True)

    avl.communicate('LOAD ~/file/avlexamplefile.avl')

这几乎可行。 AVL 加载,第一个命令被执行,但随后我收到以下错误,并且不会再执行任何命令。

    AVL   c>  forrtl: severe (24): end-of-file during read, unit -4, file        stdin
    Image              PC                Routine            Line        Source             
    avl3.35            000000010A00F43B  Unknown               Unknown  Unknown
    avl3.35            000000010A00DBFE  Unknown               Unknown  Unknown
    avl3.35            0000000109FD5177  Unknown               Unknown  Unknown
    avl3.35            0000000109F8B426  Unknown               Unknown  Unknown
    avl3.35            0000000109F8AA39  Unknown               Unknown  Unknown
    avl3.35            0000000109FB61F3  Unknown               Unknown  Unknown
    avl3.35            0000000109EEECF3  Unknown               Unknown  Unknown
    avl3.35            0000000109E7130F  Unknown               Unknown  Unknown
    avl3.35            0000000109E6FC7C  Unknown               Unknown  Unknown
    libdyld.dylib      00007FFF8B1D95AD  Unknown               Unknown  Unknown

谁能指出我做错了什么?最后,我想将上面的内容放在一个 for 循环中,以运行多个变体。

【问题讨论】:

    标签: python python-3.x subprocess


    【解决方案1】:

    尝试使用avl.stdin.write("your cmd here" +'\n')

    使用 xfoil 的工作示例在这里(不是我的):

    https://github.com/Launchpad-McQ/Aileron-design/blob/master/design-aileron.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多