我有许多不同的代码,它们都将文本文件与数据作为输入,并写入另一个作为输出。其中三个代码是用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代码。
我非常感谢任何解决这个问题的建议。 提前谢谢!
答案 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")