※本記事はアフィリエイト広告(PR)を含みます
自動化を始めると、必ずと言っていいほど出てくるのが「パス」という言葉です。パスとは、ざっくり言えば「ファイルやフォルダの住所」のこと。 これがずれていると、プログラムは「そんなファイル見つからないよ」とエラーを返します。この記事を読むと、パスの正体・絶対パスと相対パスの違い・つまずいたときの直し方が、順を追ってわかります。
パスとは?「ファイルの住所」だと思えばOK
パソコンの中には、フォルダの中にフォルダ、その中にファイル……と、たくさんの入れ物が入れ子になっています。この階層のどこに目的のファイルがあるかを、文字で書き表したものがパスです。
たとえば、こんな見た目をしています。
- Windows:
C:\Users\hana\Documents\blog\article.txt - Mac:
/Users/hana/Documents/blog/article.txt
区切りの記号がWindowsは \(バックスラッシュ/円マーク)、Macは /(スラッシュ)と違いますが、意味は同じ。「Usersフォルダの中のhanaフォルダの中の……」と、上の階層から順に道順を書いているだけです。
フォルダ:ファイルをまとめて入れておく入れ物。「ディレクトリ」とも呼びます(同じ意味です)。
絶対パスと相対パス:宛先の書き方が2種類ある
パスには大きく2種類あります。手紙の宛先を思い浮かべると、すっと理解できます。
絶対パスは、都道府県から書いたフルの住所です。C:\ や / という一番上(ルート)から書き始めるので、どこから見ても場所が一つに決まります。
相対パスは、「今いる場所からの道順」です。たとえば今あなたが blog フォルダの中にいるなら、article.txt と書くだけでそのファイルを指せます。同じ建物の中で「隣の部屋」と言えば通じるのと同じ感覚です。
相対パスでよく使う記号も覚えておきましょう。
.(ドット1つ)=今いる場所..(ドット2つ)=1つ上のフォルダimages/cat.png=今いる場所の中の imagesフォルダの cat.png
全体の流れ:パスが関わる場面
パスは、こんな場面で必ず登場します。
- ターミナルで移動するとき:
cd(チェンジ・ディレクトリ)でフォルダを移動する際に指定する - プログラムでファイルを読み書きするとき:Pythonの
open("data.csv")などで指定する - 画像やCSVをまとめて処理するとき:フォルダのパスを渡して中身を一括処理する
ターミナル:文字で命令を打ち込んでパソコンを操作する画面。「今どのフォルダにいるか」を常に意識する道具です。
どの場面でも共通する大事な考え方が、次の「カレントディレクトリ」です。
カレントディレクトリ=「今いる場所」
カレントディレクトリとは、あなた(や実行中のプログラム)が今いるフォルダのこと。相対パスは、この「今いる場所」を基準に道順を計算します。だから同じ data.csv と書いても、今いる場所が違えば別のファイルを探しに行ってしまうのです。
相対パスのトラブルは、ほぼこの「今いる場所の勘違い」が原因です。私も最初のころ、コードは正しいのにファイルが見つからず30分悩み、原因が「別のフォルダで実行していただけ」だったことが何度もありました。
最初の一歩:今いる場所を確かめてみよう
理屈より、まず1つ手を動かしてみましょう。ターミナルを開いて、次のコマンドを打つだけです。
今いる場所(カレントディレクトリ)を表示する:
- Mac/Linux:
pwd - Windows(PowerShell):
pwd - Windows(コマンドプロンプト):
cd(引数なしで打つ)
すると、あなたが今いるフォルダの絶対パスがずらっと表示されます。これが「相対パスの基準点」です。次に、
cd Documents
と打てば Documentsフォルダに移動でき、もう一度 pwd を打つと表示が変わります。この「今どこにいるか」を自分で確かめられるようになれば、パスの8割は攻略したようなものです。
よくある疑問
Q. FileNotFoundError と出ました。どうすれば?
A. パソコンが指定の住所にファイルを見つけられなかった合図です。まず pwd で今いる場所を確認し、その場所から見たファイルの道順が合っているかを見直します。うまくいかないときは、いったん絶対パス(フルの住所)で書くと確実です。
Q. \ と /、どちらを使えばいい?
A. 基本は使っている環境に合わせます。ただしPythonのコードでは、Windowsでも / で書くか、\\ と2つ重ねるのが無難です。\ を1つだけ書くと特別な意味に解釈され、エラーの原因になることがあります。
Q. パスに全角スペースや日本語が入っていても大丈夫?
A. 動く場合もありますが、トラブルのもとです。とくにスペースを含むパスは、ターミナルで途中までしか読まれないことがあります。慣れるまでは、フォルダ名を半角英数字にしておくと安心です(環境により挙動は異なります)。
Q. 絶対パスと相対パス、どちらを使うべき?
A. どちらも正解です。自分のパソコンだけで確実に動かしたいときは絶対パス、他の人と共有したりフォルダごと移動させたりする可能性があるなら相対パスが向いています。
まとめ
- パス=ファイルの住所。 フォルダの階層を
/や\で区切って書く - 絶対パスはフルの住所、相対パスは今いる場所からの道順
- 相対パスの基準はカレントディレクトリ(今いる場所)。トラブルの多くはここの勘違い
- 困ったらまず
pwd(またはコマンドプロンプトのcd)で今いる場所を確認する
パスがわかると、ファイルを読み込むプログラムも、ターミナル操作も、ぐっと怖くなくなります。次の一歩として、実際にターミナルを開いて cd と pwd を行き来し、自分の手で「今いる場所」を動かす感覚をつかんでみてください。
PR: ChatGPTなどの生成AIを学び仕事に活かす!「DMM 生成AI CAMP」
無料セミナー予約から参加可能、生成AIを仕事に活かすスキルをオンラインで学べる。
PR: 未経験からの転職 Pythonでキャリアを変える【Python Winner】
無料カウンセリング・受講相談から参加可能、Python習得によるIT転職支援。


コメント