このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】パスの文字列リテラル

パスの文字列リテラル
Pythonでファイルやディレクトリの位置を表すパスを扱う際、Windowsのパス(例:"D:\Data\Projects\MyApp")は、バックスラッシュ(\)が多用されるため、通常の文字列リテラルではエスケープシーケンスとして解釈される問題があります。ここでは、パスの文字列リテラルを書く方法と、raw文字列を使ってエスケープ処理を回避する方法について、順を追って解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.パスを通常の文字列リテラルで表現する方法
Windowsのパスを通常の文字列リテラルで記述する場合、バックスラッシュはエスケープシーケンスの開始記号となるため、各バックスラッシュを「\」と2回続けて書く必要があります。
例えば、以下のコード例は、"D:\Data\Projects\MyApp" というパスを正しく表現するためのものです。
print("D:\\Data\\Projects\\MyApp")
このコードを実行すると、出力結果は
D:\Data\Projects\MyApp
となり、エスケープシーケンスを適切に処理されたパスが表示されます。
2.raw文字列を利用した記述方法
複数のバックスラッシュを書くのが面倒な場合、raw文字列を利用することで、バックスラッシュをエスケープ文字として解釈させず、そのまま文字として扱えます。raw文字列は、文字列リテラルの前に「r」または「R」を付けるだけです。
以下のコード例は、raw文字列を利用して同じパスを記述する方法です。
print(r"D:\Data\Projects\MyApp")
このコードを実行すると、出力結果は
D:\Data\Projects\MyApp
となり、エスケープ処理を気にせずに書くことができるため、特にパスのような文字列を扱う場合に非常に便利です。
3.raw文字列の記法についてのまとめ
以下の表に、通常の文字列リテラルとraw文字列リテラルの違いと用途をまとめます。
記法 | 例 | 説明 |
---|---|---|
通常の文字列リテラル | "D:\\Data\\Projects\\MyApp" | バックスラッシュは「\」と2回記述してエスケープする必要がある。 |
raw文字列リテラル | r"D:\Data\Projects\MyApp" | 文字列リテラルの先頭に「r」または「R」を付けることで、バックスラッシュがそのまま文字として扱われる。 |
4.応用例:パスを組み合わせた文字列の連結
パスの一部を別の文字列リテラルとして定義し、連結することで柔軟にパスを構築することも可能です。次の例では、ディレクトリとファイル名を個別に定義し、+
演算子を使って1つのパスに連結します。
directory = r"D:\Data\Projects"
filename = "app.exe"
full_path = directory + "\\" + filename # 通常の文字列とraw文字列を組み合わせる場合は、
print(full_path) # 必要な箇所だけエスケープする
実行結果は、
D:\Data\Projects\app.exe
となります。このように、raw文字列を主体に使用しながら、必要に応じて通常の文字列のエスケープ記法と組み合わせることで、柔軟なパス操作が可能です。
まとめ
ここでは、WindowsのパスをPythonの文字列リテラルとして正しく扱う方法を学びました。
- 通常の文字列リテラルでは、バックスラッシュを「\」と2回記述してエスケープする必要があります。
- raw文字列リテラルを利用すれば、先頭に「r」または「R」を付けるだけで、バックスラッシュをエスケープせずに記述でき、パスのようなテキストを書くのにとても便利です。
- 応用例として、パスの一部を連結してフルパスを構築する方法も紹介しました。
次のコンテンツでは、比較演算子を使った比較について解説していきます。ぜひ、実際に手を動かしながらこれらの記法を確認してみてください。