ジオマーリン

geomerlin.com に関することを中心に。難しいことをもっと難しく書くブログ。

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")