【Python】.ipynb→.pyへの変換

Python

目的

拡張子をipynbからpyに変えたかった。
が、、単純にはいかなかった。

開発環境:
windows Corei5-2520M CPU 2.50GHz RAM 8.0GB
Jupyterlab,JupyterNoteBook

ちなみにNotebook(のようなもの)をテキストエディタの一つであるAtomで実行する方法は以下の記事に書いた。

ではさっそく、

やったこと

拡張子をそのままリネーム

初めにJupyterlabにて以下のコード入力

gleeting_test.ipynb

f:id:grau1129:20181022172711p:plain

このgleeting_test.ipynbを.pyにリネームして別のファイル(test_import.ipynb)からimportしようと思ったら、以下のエラーコードが発生。

test_import.py

f:id:grau1129:20181024100626p:plain

gleeting_test.pyの中身を見てみると、以下のようにコードが変わってしまっていた。

gleeting_test.py

f:id:grau1129:20181024101047p:plain
f:id:grau1129:20181024101052p:plain

どうやらipynbファイルはjson形式で書かれているもので、json形式で書かれているものをpythonファイルに変更しろと言われても無理がありますよね。ですのでそのまま書き換えるのはよろしくない気がしてきますね。

解決法

labでは拡張子が変更できなそうだったためNotebookに移動

f:id:grau1129:20181022173403p:plain

上のようなことをして拡張子を変更し.pyファイルとしてダウンロード。
その後ダウンロードした.pyファイルをカレントフォルダに移動

結果

test_import.ipynb

f:id:grau1129:20181022173521p:plain

できた。

ちなみに他の方法としては、アナコンダプロンプト上でipynbがあるフォルダまで移動して以下のコマンドをたたく方法もあります。

jupyter nbconvert --to script *.ipynb

アナコンダプロンプトはanacondaをインストールした際に一緒にインストールされているコマンドプロンプトと似たものです。わからなければwindowsなら画面左下の検索画面から”anaconda”と入力すれば出てくると思います。
該当のフォルダまで移動し、上記コマンドをたたき以下の文字が出てくれば成功です。

[NbConvertApp] Converting notebook change.ipynb to script
[NbConvertApp] Writing 89 bytes to change.py

実際にフォルダを見てみるとipynbとpyのファイルがあると思います。
上記のコマンドは拡張子を変換するだけでなく、元のipynbも残しておいてくれるんですね。

結言

直接renameするのはコードを大きく変えてしまうからやらないほうが良いと思います。
また、個人的にはUNIXコマンドも使いたいので、アナコンダプロンプトよりもanaconda Navigatorのターミナルからいろいろ動かす方がやりやすいかも?
ターミナルに関してはまた別の記事に書こうと思います。

コメント

タイトルとURLをコピーしました