シェルコマンド
以前、Google ドライブのマウントや、シェルコマンド用のコラボファイルを作っておいたんですが。。
Goolgeコラボラトリーで、 !cd と%cd って何が違うんだろう??って思ったのと、Filedownloadでエラーが出るので、少し違いなどを含めて、新しいファイルを作っておきました。
!と%の違い マジックコマンド
どっちでもいい話ですが、ColabはIPython・Jupyter Notebookをベースに作られていて、シェルコマンドなどを直接打てるのですが、!cd ってやっても チェンジディレクトリしなかったり、!mkdirしても、%mkdirでもどちらでも、ディレクトリは作られるけど。。!でした方は、次使おうと思うと消えていて、%の方は、消えない。。
PythonDataScienceHandbook をちょっと見ていて、!と%の違いが書かれていたのでそれをメモしておきます。
Shell command 等 の使い方¶
基本は、! か % を付ける。
- ! は、Temporary Sub shell 内で動く
- % は、永続的
の違い
- mkdir cd 等は、%mkdir %cd でないと一時的実行で永続化されない
なので、%mkdirじゃないとダメなんですね。。%cdは何故か??ちょっと理解に苦しみますが(笑)
動き方の例を、colabファイルに作ってあるので、参考にしてみてください。
なお、Linuxのコマンド自体は、こちらのページが参考になるかな?
ちなみに、何故かわからないんですが、シェルスクリプトにすると、うまく動かないのがありますね。。。3D CADファイルのSTL形式からNEC2形式に変換するシェルスクリプトがあるんですが、普通にUbuntu18では動くのですが、Google Colabでは、いろいろとエラーがでます。
!sh ./test.sh
!bash ./test.sh
中には動くスクリプトもあるので。。 やってみないと分からないのですが、IF分の分岐などでおかしくなるみたいです。なぜかな??
File Downloadでエラーが出る
Google Colabにスニペットがあって、File Downloadは、そのままコピペされるんですが。。
from google.colab import files with open('example.txt', 'w') as f: f.write('some content') files.download('example.txt')
これ、chromeの設定で、サードパーティCookieの設定をオフ、許可サイトに
colab.research.google.com
を加えておかないと、エラーがでます。
chrome://settings/content/cookies
Stackoverflowさまさまです。
Google Driveをマウントすると、ファイルマネージャみたい
前からなんでしょうが。。気づかなかった(笑)
こんな感じで、左のファイルってところに、中身が見えるようになったんですね。前は、Colab Notebooksしか見えなかったように思うんですが。。 便利になっています。