tasukuの日常雑記

教育学部修士でありながらIT業界に就職を決めた大学院生。研究でpython、c#を触っています。このブログではプログラムや日々の生活で培ったことについて思うがままに記述します。

pythonでrootが適切に動作しない場合の対処法

pythonでrootを使用していてうまく動かないことがあったので、今回は「何が起きたのか?」と「どうしたら解決したのか?」について備忘録もかねて記事にします。

何が起きたのか?

pyhtonによってデータの処理を行うため、rootというツールを使うことになりました。

早速rootをダウンロードし、簡単なコードで動作確認を行いました。 使用したコードとテキストファイルは以下の通りです。

(コードに関する質問がありましたらコメントください!多数の方から要望がありましたら記事にして解説もします!)

このコードとテキストファイルを使用するとこのようなpngができます。
f:id:tasuku373:20170805221422p:plain 実際に僕のパソコンでも同じpythonコードで同じtxtファイルを使うことで同じ画像を作ることができました。

f:id:tasuku373:20170805221602p:plain おお!ええやん!!!
自分の想像通りのグラフを作成できたので一安心しました。
「よし、もう一度グラフが作れるか試そう!」
そう思い、表示されていたグラフを消し、もう一度pythonを走らせたところ… f:id:tasuku373:20170805222257p:plain ん?なんかさっきのグラフ表示されんけど…
つか、
f:id:tasuku373:20170805222418p:plain なんか訳分からんエラーを出してる?
ということで、
pythonでrootを走らせた際に、初回は適切に動作するが2度目になるとよく分からないエラーを吐いて動作しない現象に直面しました。

どう解決したの?

インターネットを必死に検索した結果、
'ROOT.std.file = 'dummy_for_old_pyastro''
をコードの主要部の前に書き込めば解決するとのことでした。 そこでその助言通りに書き込んだコードが、

になります。
このコードでプログラムを走らせた所、初回の動作だけではなく、2回目・3回目も適切に動作しました。

まとめ

pythonでrootを使うときは作成するコードに特別な記述が必要!
○'ROOT.std.file = 'dummy_for_old_pyastro''を書き込むことで、変な挙動を解決できる!

コードに関して質問があればコメントください!
twitterで聞いていただいても大丈夫です! それでは!!!