使用Python中的文本文件输出运行IDL代码

时间:2016-06-29 09:44:35

标签: python python-2.7 idl idl-programming-language

我有许多不同的代码,它们都将文本文件与数据作为输入,并写入另一个作为输出。其中三个代码是用Python 2.7编写的,但其中一个是用IDL编写的。我的目标是通过输入“python master.py”来创建一个可以运行所有这些代码的“主”python程序。但是,由于我的系统的限制,我无法使用this question中提到的'pyIDL'或'pyIDLy'模块。不确定是否重要,但这是使用linux命令提示符。

目前我的'master.py'代码如下所示:

import os
os.system("python pycode_1.py")

os.system("idl")
os.system(".com idlcode.pro")
os.system(".r idlcode,"imputfile.dat"")
os.system("exit")

os.system("python pycode_2.py")
os.system("python pycode_3.py")

此代码运行第一个python代码并输入IDL。但是,它不会将后续命令输入IDL。这意味着IDL命令提示符出现,但我无法运行后面的IDL代码。

我非常感谢任何解决这个问题的建议。 提前谢谢!

2 个答案:

答案 0 :(得分:2)

如果您有IDL 8.5或更高版本,它随附内置的IDL-Python桥。那么您的代码将类似于:

from idlpy import *
IDL.idlcode()

希望这有帮助。

答案 1 :(得分:0)

所以我找到了一个似乎适合这个问题的解决方案。上面的问题是使用os.system函数来做它无法做到的事情。我的新编码是:

import os
import subprocess

os.system("python python_code1.py")

p=subprocess.Popen("idl", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(".com idlcode.pro\n")
p.stdin.write("idlcode\n")
p.stdin.write("exit")
p.wait()
os.system("python python_code2.py")
os.system("python python_code3.py")