2017-12-22 10 views
2

私はPythonでbashセッションを開き、それが端末であるかのように対話し続けたいと思います。私はこの出力を取得するgitのクローン中に、Pythonでbashセッションを開いて通信する方法は?

import subprocess as s  

class Session: 
    proc = None 
    def execute(self, cmd): 
    if self.proc is None: 
     self.proc = s.Popen("/bin/bash", shell=True, stdin=s.PIPE, stdout=s.PIPE, stderr=s.STDOUT) 
    cmd = cmd + ' ; echo EOF\n' 
    self.proc.stdin.write(cmd.encode()) 
    output = '' 
    while not output.endswith("EOF"): 
     output += self.proc.stdout.read(1).decode() 
    return output 

sess = Session() 
sess.execute("export MY_VAR=HELLO") 
sess.execute("git clone https://github.com/internetsadboy/crapi.git") 

しかし、それは

Cloning into 'crapi'... 
EOF 
+0

は、あなたが/ binに/ bashのを実行しようとしたことがありますか?それ以降、コマンドをパイプすることができます – dGRAMOP

+0

可能な重複:[Pythonを使った対話型入出力](https://stackoverflow.com/questions/19880190/interactive-input-output-using-python) – John1024

+0

'export MY_VAR = HELLO'はサブプロセスで動作しないと思います –

答えて

-1

よしを失敗し、完全な免責条項は、Pythonは私の最初の言語だったかもしれませんが、確認してください。これは私がこれまで持っているものです私の最高の

これは、あなたが始める必要がありません。その後

self.execute("/bin/bash")#spawn a bash session 

を、あなたはパイプがトンをコマンドすることができますo bash。あなたのbash端子に ゴー

echo "echo test" | /bin/bash 
を実行します。私はあなたが達成しようとしているものを完全にはわからないんだけど、あなたは、パイプ、ここでドキュメントを使用してすることができます。この作品を証明する https://docs.python.org/2/library/subprocess.html#subprocess.check_call

を迅速実験

とその結果は?

test 

ませ

echo test 
関連する問題