そうですよね。
今までパソコンを触る機会はそれなりにあった僕でもIT企業に入社して初めて聞く単語でした。
ただ、ディレクトリは理解しておかないと、プログラミングでは必須の知識です。
なぜなら、これを理解しないとプログラムの作りようがないからです。
パソコンは頑固
パソコンは本当に頑固です。
言ったことしかやってくれません。
というより、指示の仕方が悪いと言ったことすらやってくれません。
と言っても、自分が見てる範囲しか探してくれません。
もしそのディレクトリに○○.pyファイルが無かったら
の一言で仕事をやめます。
なので、Pythonなどのプログラミング言語でプログラムを書くときには
□□ディレクトリ、△△ディレクトリまで下ってその中にある○○.pyファイルを実行して
と指示しなければいけません。
これが一番最初に初心者を阻む壁です。
と思ってる初心者(僕も含む)はここで必ずつまづきます。
最低限理解した方がいいディレクトリの知識
ディレクトリの専門家にならずとも、Pythonなどのプログラムを作って動かすことはできます。
ただ、全く知識0ではプログラムを作るどころか、動かすことすらできません。
そこで、今回はプログラムを作って動かせる最低限のディレクトリに関する知識を説明します。
簡単に言うとフォルダのこと!
データやプログラムを保存する箱。
※ディレクトリの中にディレクトリも入れられる。
ディレクトリの中にディレクトリを入れられるという性質のせいで、複雑な構造になってることが多いんです。
ディレクトリの位置を「パス(PATH)」を使って表現する。
パスは住所みたいなもの。
「地球→アジア→日本→関東→東京→渋谷区→渋谷ファイル」
最上階層のディレクトリ。
Windowsでいうと『Window(C:)』というフォルダ。正式には『C:\』と書く。
さっきの例でいくと、
今いるディレクトリ。
ファイルや見てる人によってカレントディレクトリは変わる。
さっきの例の渋谷ファイルから見ると、
ディレクトリに関してはこれくらいの知識で大丈夫。
このページは閉じて…
ついでにパスの書き方まで読んで!
ディレクトリを表現するパスの種類
ディレクトリの意味は大体理解できたと思います。
次はこれをパソコンが理解できるように書く方法について説明します。
パスの表現方法は2種類あります。
「絶対パス」と「相対パス」です。
絶対パス
さっきの渋谷ファイルの例を使いましょう。
「地球→アジア→日本→関東→東京→新宿区→新宿ファイル」
こうやって全て書き出すのが絶対パスです。
相対パス
「2個上のディレクトリ(東京)に戻って、新宿区→新宿ファイルと辿って」
絶対パスで全部書く
絶対パスだと不都合が生じる場合があるらしい。
絶対パスだと不都合が生じる
例えば、ファイルの保存場所を変更した時。
例)日本がアメリカの属国になったら?
▼絶対パス
新宿ファイルの絶対パスは?
「地球→北米→アメリカ→日本→関東→東京→新宿区→新宿ファイル」
▼相対パス
渋谷ファイルから見た新宿ファイルの相対パスは?
「2個上のディレクトリ(東京)に戻って、新宿区→新宿ファイルと辿って」
そうなんです。
相対パスでプログラムの中身を書いておけば、プログラムが移動しても変更する必要が無いんです!
パスの書き方
パスの考え方は分かったと思うので、実際にプログラムで使う書き方を説明します。
基本的にディレクトリをスラッシュ/で区切って表現します。
画面上は\マークで表示される。
なぜかは分かりません。
全部スラッシュにしてくれればよかったのに。
ちなみに、バックスラッシュはひらがなの「ろ」のキーです。
「地球/アジア/日本/関東/東京/渋谷区/渋谷ファイル」
次に渋谷ファイルから見た新宿ファイルの相対パスの書き方です。
日本語で書けばこんな感じでしたね。
「2個上のディレクトリ(東京)に戻って、新宿区→新宿ファイルと辿って」
ではきちんと書くとどうなるのでしょうか。
「../../新宿区/新宿ファイル」
こうなります。
記号の意味を説明します。
./ 現在のディレクトリ(省略可)
../ 1つ上のディレクトリ
../../2つ上のディレクトリ
例)渋谷ファイルから見た恵比寿ファイル
「同じ渋谷区フォルダの恵比寿ファイル」
「./恵比寿ファイル」か「恵比寿ファイル」./は省略可
ここまで理解できれば、あとは実際にプログラムの中でパスを書いて理解しましょう!
バッチファイルの意味
rem --- 作業フォルダをバッチファイルのパスに設定 ---
cd /d %~dp0
rem --- プログラムの実行 ---
python %~dp0\scraping-prototype.py
全ての行の意味を説明するとこういうこと。
rem:この行がコメントになる。(実行されない)
cd:change directory(チェンジディレクトリ)の略。コマンドプロンプトが参照しているディレクトリを移動する。
%~dp0:バッチファイルがあるディレクトリ
一番下の行:バッチファイルがあるディレクトリの「scraping-prototype.py」を実行する。
この中でも2行目がディレクトリを指定してる行です。
cd/d%~dp0
「バッチファイル自身があるディレクトリをカレントディレクトリとする」