MENU
このブログのテーマはこちら ⇒ SWELL公式HP

Python初心者がつまづきやすいディレクトリを初心者が説明してみた。

  • URLをコピーしました!
ディレクトリってなんだよ。

そうですよね。

今までパソコンを触る機会はそれなりにあった僕でもIT企業に入社して初めて聞く単語でした。

ただ、ディレクトリは理解しておかないと、プログラミングでは必須の知識です。

なぜなら、これを理解しないとプログラムの作りようがないからです。

目次

パソコンは頑固

パソコンは本当に頑固です。

言ったことしかやってくれません。

というより、指示の仕方が悪いと言ったことすらやってくれません。

○○.pyファイル実行して!

と言っても、自分が見てる範囲しか探してくれません。

もしそのディレクトリに○○.pyファイルが無かったら

それここに無い

の一言で仕事をやめます。

なので、Pythonなどのプログラミング言語でプログラムを書くときには

カレントディレクトリ(今見てるディレクトリ)の1つ上にあるディレクトリに上がって、
□□ディレクトリ、△△ディレクトリまで下ってその中にある○○.pyファイルを実行して

と指示しなければいけません。

OK

これが一番最初に初心者を阻む壁です。

プログラムを書いて実行すればいいんだろ?

と思ってる初心者(僕も含む)はここで必ずつまづきます。

最低限理解した方がいいディレクトリの知識

ディレクトリの専門家にならずとも、Pythonなどのプログラムを作って動かすことはできます。

ただ、全く知識0ではプログラムを作るどころか、動かすことすらできません。

そこで、今回はプログラムを作って動かせる最低限のディレクトリに関する知識を説明します。

 

ディレクトリとは?

簡単に言うとフォルダのこと!
データやプログラムを保存する箱。

※ディレクトリの中にディレクトリも入れられる。

ディレクトリの中にディレクトリを入れられるという性質のせいで、複雑な構造になってることが多いんです。

ディレクトリの位置を「パス(PATH)」を使って表現する。

ま~た知らない単語だ。

パスは住所みたいなもの。

例)渋谷ファイルのパスは?
「地球→アジア→日本→関東→東京→渋谷区→渋谷ファイル」

 

ルートディレクトリ

最上階層のディレクトリ。
Windowsでいうと『Window(C:)』というフォルダ。正式には『C:\』と書く。

さっきの例でいくと、

例)ルートディレクトリは?「地球」

 

カレントディレクトリ

今いるディレクトリ。
ファイルや見てる人によってカレントディレクトリは変わる。

さっきの例の渋谷ファイルから見ると、

例)カレントディレクトリは?「渋谷区」

 

なかなか分かりやすい説明するじゃない

 

ディレクトリに関してはこれくらいの知識で大丈夫。

よし。ディレクトリは分かったし、
このページは閉じて…
ちょっと待って!
ついでにパスの書き方まで読んで!

ディレクトリを表現するパスの種類

ディレクトリの意味は大体理解できたと思います。

次はこれをパソコンが理解できるように書く方法について説明します。

パスの表現方法は2種類あります。

「絶対パス」と「相対パス」です。

は?

 

絶対パス

さっきの渋谷ファイルの例を使いましょう。

新宿ファイルの絶対パスは?
「地球→アジア→日本→関東→東京→新宿区→新宿ファイル」

こうやって全て書き出すのが絶対パスです。

相対パス

渋谷ファイルから見た新宿ファイルの相対パスは?
「2個上のディレクトリ(東京)に戻って、新宿区→新宿ファイルと辿って」
どっちでもいいの?
OKだけど…
じゃあ全部書けばよくて分かりやすいから、
絶対パスで全部書く

絶対パスだと不都合が生じる場合があるらしい

絶対パスだと不都合が生じる

例えば、ファイルの保存場所を変更した時。

 

例)日本がアメリカの属国になったら?

▼絶対パス

新宿ファイルの絶対パスは?
「地球→北米→アメリカ→日本→関東→東京→新宿区→新宿ファイル」

▼相対パス

渋谷ファイルから見た新宿ファイルの相対パスは?
「2個上のディレクトリ(東京)に戻って、新宿区→新宿ファイルと辿って」

 

ん?相対パスは変わってない。

そうなんです。

相対パスでプログラムの中身を書いておけば、プログラムが移動しても変更する必要が無いんです!

あくまでファイル同士の相対関係が変わらない場合。

 

パスの書き方

パスの考え方は分かったと思うので、実際にプログラムで使う書き方を説明します。

基本的にディレクトリをスラッシュ/で区切って表現します

Windowsだけバックスラッシュ\で区切る。
画面上は\マークで表示される。

なぜかは分かりません。

全部スラッシュにしてくれればよかったのに。

ちなみに、バックスラッシュはひらがなの「ろ」のキーです。

例)渋谷ファイルの絶対パスは?
「地球/アジア/日本/関東/東京/渋谷区/渋谷ファイル」

 

次に渋谷ファイルから見た新宿ファイルの相対パスの書き方です。

日本語で書けばこんな感じでしたね。

「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
「バッチファイル自身があるディレクトリをカレントディレクトリとする」

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次