2017-08-10 8 views
0

私はLinuxのプロンプトを変更するいくつかのコマンドでpythonスクリプトを実行しようとしています。私はmycmdを実行したときデフォルトのプロンプトを変更するpythonでlinuxコマンドを実行する方法

>>> import os 
>>> import commands 
>>> os.chdir("/home/mycmd") 
>>> commands.getoutput("pkill mycmd") 
'' 
>>> commands.getoutput("mycmd") # it was stuck, had to press contrl^c 
^CTraceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib64/python2.7/commands.py", line 50, in getoutput 
    return getstatusoutput(cmd)[1] 
    File "/usr/lib64/python2.7/commands.py", line 60, in getstatusoutput 
    text = pipe.read() 
KeyboardInterrupt 

は手動で、私は(shell)プロンプトではなく#プロンプトを参照してください。それはサポートされていないcommands.getoutputのように見えますが、プロンプトを変更するpythonスクリプトでこのようなコマンドを実行できる方法はありますか?

+0

は、どのような状況の下で待つのMycmdい?このような状況下では、コマンドは決して実行されないので、決して戻ってこないでしょう。 – pointerless

+0

これは 'mycmd'と何が関係しているのでしょうか。それは確かに標準コマンドではありません。 Linux自体にはほとんどプロンプトがありません。あなたが考えているのはあなたのシェルや他のREPLの一部でしょう。 –

+0

'mycmd'を実行すると、別のプロンプトに入り、その中にプロンプ​​トを変更するコマンドをいくつか追加して、' exit 3'を実行すると通常のLinuxプロンプトが表示されます。 –

答えて

0

あなたは、この使用してサブプロセス行うことができます。

import subprocess 
p = subprocess.Popen(['pkill', 'mycmd'], stdout=subprocess.PIPE, stderr=stdout) 
p.communicate() 

このモジュールは、いくつかの古いモジュールや機能を交換する意向を:

os.system 
os.spawn* 
os.popen* 
popen2.* 
commands.* 

subprocess - Subprocess management

関連する問題