5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでWindowsのファイルパスを書く方法(raw文字列・pathlib)

5
Last updated at Posted at 2019-01-28

PythonでWindowsのファイルパスを書く方法

PythonでWindowsのファイルパスを書くときに、バックスラッシュ(\)の扱いでつまずいたので整理します。

結論としては、ちょっとした確認なら raw文字列、実際の処理では pathlib を使うのがおすすめです。

何が起きるのか

Windowsのパスは次のように \ を使います。

C:\Users\joji\Desktop\hoge.txt

ただし、Pythonの文字列では \ はエスケープ文字としても使われます。たとえば \n は改行、\t はタブとして扱われます。

そのため、Windowsのパスをそのまま書くと意図しない文字列になることがあります。

方法1: バックスラッシュを2つ書く

\ 自体を文字として扱いたい場合は、\\ と2つ書きます。

filepath = "C:\\Users\\joji\\Desktop\\hoge.txt"
print(filepath)
# C:\Users\joji\Desktop\hoge.txt

確実ですが、パスが長くなると少し読みにくいです。

方法2: raw文字列を使う

文字列の先頭に r を付けると、バックスラッシュをほぼそのまま扱えます。

filepath = r"C:\Users\joji\Desktop\hoge.txt"
print(filepath)
# C:\Users\joji\Desktop\hoge.txt

短いメモや固定パスを書くときは、この方法が分かりやすいです。

ただし、raw文字列は末尾を1つのバックスラッシュで終われません。

# これはエラーになる
# filepath = r"C:\Users\joji\Desktop\"

末尾に \ が必要な場合は、次のように書きます。

filepath = r"C:\Users\joji\Desktop" + "\\"

方法3: スラッシュで書く

Windowsでも、多くのPython処理では / 区切りのパスを扱えます。

filepath = "C:/Users/joji/Desktop/hoge.txt"

\ のエスケープを気にしなくてよいので、簡単なスクリプトではこれでも十分です。

方法4: pathlibを使う

ファイルやフォルダを扱う処理では、pathlib を使うと安全で読みやすくなります。

from pathlib import Path

filepath = Path("C:/Users/joji/Desktop/hoge.txt")

print(filepath.name)    # hoge.txt
print(filepath.parent)  # C:\Users\joji\Desktop

フォルダとファイル名をつなげるときも、文字列連結より分かりやすいです。

from pathlib import Path

desktop = Path.home() / "Desktop"
filepath = desktop / "hoge.txt"

print(filepath)

Path.home() を使うと、ユーザー名を直接書かずにホームフォルダを取得できます。

まとめ

書き方 使いどころ
\\ を使う "C:\\Users\\joji" 仕組みを理解するにはよい
raw文字列 r"C:\Users\joji" 固定パスを短く書きたいとき
スラッシュ "C:/Users/joji" 手軽に書きたいとき
pathlib Path.home() / "Desktop" ファイル操作を書くとき

個人的には、最初はraw文字列で覚えて、ファイル操作が増えてきたら pathlib に寄せるのがよさそうです。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?