このページで解説している内容は、以下の 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」を付けるだけで、バックスラッシュをエスケープせずに記述でき、パスのようなテキストを書くのにとても便利です。
  • 応用例として、パスの一部を連結してフルパスを構築する方法も紹介しました。

 次のコンテンツでは、比較演算子を使った比較について解説していきます。ぜひ、実際に手を動かしながらこれらの記法を確認してみてください。