2016-06-29 3 views
0

私は、すべて入力としてデータを持つテキストファイルを取り、出力として別のコードに書き込むいくつかの異なるコードを持っています。これらのコードのうち3つはPython 2.7で書かれていますが、1つはIDLで書かれています。私の目標は、 "python master.py"と入力することで、これらのコードをすべて実行できる "マスター" Pythonプログラムを1つ作成することです。しかし、私のシステムの限界のために、私はthis questionで参照される 'pyIDL'または 'pyIDLy'モジュールを使用することができません。それが問題なのかどうかは分かりませんが、これはLinuxのコマンドプロンプトを使っています。Pythonでテキストファイルを出力するIDLコードを実行する

現在、私の「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

実行しようとしているプログラム「idl」とは何ですか? – Aya

+0

idlはプログラミング言語です。コマンド 'idl'はidlコマンドラインプロンプトを起動します。これは 'python'と同様です。次に、以下のコマンドを実行してスクリプトをコンパイルして実行する必要があります。 – TheBoro

+0

IDLには多くの実装があります。使用しているバージョンへのリンクを提供できますか? – Aya

答えて

2

あなたはIDL 8.5または内蔵のIDL-Pythonのブリッジと後で、その船を持っている場合は、あなたのコードのようなものになります。

from idlpy import * 
IDL.idlcode() 

・ホープ、このことができますし。

0

私はこの問題でうまくいくと思われるソリューションを試しました。上記の問題は、os.system関数を使用してできなかったことを行うことでした。私の新しいcoddeは次のとおりです。

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") 
関連する問題