2016-05-11 4 views
3

私の最初の質問はstackoverflow!Pythonでは、どのように外部のプログラム(viやnanoなど)とシェルして対話して、Pythonに戻ることができるか

私は、ユーザーがvi、nano、ssh、telnetなどと対話してプログラムを終了するときにPythonスクリプトに戻る必要がある外部プログラムをどのように起動できるかを調べようとしています。

私は外部プログラムの送信/受信または自動化を使用したくない場合は、起動し、通常どおりに使用してからスクリプトに戻ります。私はbashがこれを行うためのより自然な方法だと思うが、私はPythonでそれを実現することを望んでいた。

+0

@PadraicCunningham:第二段落を読んでいます。彼はそれとやりとりしたくない。彼はそれをユーザーにまっすぐ伝えたいと思う。 – zondo

答えて

1

subprocess moduleを使用してください。対話型アプリケーションではうまく動作します。 subprocess.callはアプリケーションを起動し、アプリケーションが終了するまでブロックしています。

viを開始し、終了後には、ssh以上127.0.0.1への接続を開始します:

import subprocess 
subprocess.call(["vi"]) 
subprocess.call(["ssh","127.0.0.1"]) 
+0

私はこのソリューションをvim、ssh、telnet、nano、bashでテストしました。それはかなりうまくいく! – werkritter

+0

それは完全に動作します。どうもありがとう。 – jamdoran

-2

あなたがサブプロセスモジュールを使用することができます。 の例では、次のようになります。

import subprocess 

process = subproces.Popen(
    [ 
     'path/to/the/executable', 
     'optional argument', 
     'more optional arguments', 
     ... 
    ], 
    stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE, 
) 
out, err = process.communicate() 

あなたはもっとここに見つけることができます:subprocess

関連する問題