そのたおおぜい

研究とか英語とかプログラミングとか

Pythonでシェルの出力結果を保存する

Cabochaのラッパーがうまいこと使えなかった(共用サーバにインストールされているCabochaを自分のホームディレクトリのAnacondaから叩こうとしたけど,インポートでコケて面倒くさかった)ので,ひとまず,シェル経由でXMLに出力して保存しよう,ということに.別の場面でも普通に似たようなことしそうなので,一応記事にしておく.

>>>import subprocess
>>>subprocess.check_output("echo \"なんたらかんたら\" | cabocha -f 3", shell=True).decode("utf-8")
'<sentence>\n <chunk id="0" link="1" rel="D" score="0.000000" head="0" func="1">\n  <tok id="0" feature="動詞,自立,*,*,五段・ラ行,未然特殊,なる,ナン,ナン">なん</tok>\n  <tok id="1" feature="助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ">たら</tok>\n </chunk>\n <chunk id="1" link="-1" rel="D" score="0.000000" head="2" func="3">\n  <tok id="2" feature="動詞,自立,*,*,五段・マ行,連用タ接続,かむ,カン,カン">かん</tok>\n  <tok id="3" feature="助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ">たら</tok>\n </chunk>\n</sentence>\n'

出力を拾って,あとはPython側でファイルに書き込んであげれば良いでしょう. subprocessを使わないとCtrl+Cで止まらなくなるらしいので,os.systemは使わないほうが無難らしい.