ジオマーリン

仕様を公開してアドバイスを受けながら 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")