python3からpython2呼び出しを最速で
人それぞれの事情でpython3からどうしてもpython2のプログラムを実行したい時、するべきことを簡単に書く
やることは
①python2コード(p2.py)を書く
→②python3コードの中でsubprocessを書く
以上
では具体的に以上の2つを実践する
①python2コード(p2.py)を書く
import sys
#最初にpython3から標準でテキストを受け取る
got_line = sys.stdin.readline()
got_line = got_line.strip()
#ここでやりたい処理を行う(出力は文字列)
result = doingSomething(got_line)
sys.stdout.write(result.encode("utf-8")
②python3コードの中でsubprocessを書く
def inputSomethingToPython2(input_text):
p = subprocess.Popen("python p2.py", shell=True,stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#ここでpyton2に文字列を渡す
stdout_data, stderr_data = p.communicate(input_text.encode("utf-8"),timeout=20)
return stdout_data.decode("utf-8")