Pythonディレクトリ・ファイル関連(os, pathlib)

Python

こんにちは。とりりんです。

今回は、Pythonのパス関連でよく使うものを紹介します。

os.pathpathlibglobを使いこなしたいと思います。

こんなことが知りたい方向けです。

  • ディレクトリ名だけ取り出したい!
  • ファイル名だけ取り出したい!
  • ファイルを自由に指定したい!
スポンサーリンク

ディレクトリ・ファイル名関連 : os.path

os.pathモジュールでよく使うものたちを紹介します。

import osをお忘れなく。

現在地取得 : __file__

__file__で現在地を取得し、abspathと指定することで、絶対パスにします。

  path = os.path.abspath(__file__)
  print(path)
  # /Users/toririn/Desktop/run.py

ディレクトリ名・ファイル名の分割 : os.path.split()

splitでディレクトリとファイル名をタプルに分割します。

  path = os.path.split("/Users/toririn/Desktop/run.py")
  print(path[0])
  # /Users/toririn/Desktop
  print(path[1])
  # run.py

スポンサーリンク

ディレクトリ名のみ取得 : os.path.dirname()

splitでも良いのですが、dirnameでもディレクトリ名のみ取得できます。

  dire = os.path.dirname("/Users/toririn/Desktop/run.py")
  print(dire)
  # /Users/toririn/Desktop

ファイル名のみ取得 : os.path.basename()

先ほどと同じくsplitでも良いのですが、basenameでもファイル名のみ取得できます。

  fname = os.path.basename("/Users/toririn/Desktop/run.py")
  print(fname)
  # run.py

スポンサーリンク

絶対パスと相対パスの相互変換 : pathlib

パス関連で使用するpathlibモジュールでよく使うものたちを紹介します。

例では現在地がデスクトップであることを想定しています。

import pathlibをお忘れなく。

相対パスを絶対パスに変換 : resolve()

pathlib.Pathに変換したい相対パスを入れて、resolve()を使って変換します。

  absPath = pathlib.Path("test/*.txt").resolve()
  print(absPath)
  # /Users/toririn/Desktop/test/*.txt

絶対パスを相対パスに変換 : relative_to()

pathlib.Pathに変換したい絶対パスを入れて、relative_to()を使って変換します。

relative_to()の中には相対的な基準となる場所を入れます。

os.getcwd()で現在地を指定できます。

  absPath = "/Users/toririn/Desktop/test/*.txt"
  relPath = pathlib.Path(absPath).relative_to(os.getcwd())
  print(relPath)
  # test/*.txt

スポンサーリンク

ディレクトリ内のファイルループ : glob

globでパターンに一致するファイルのリストを作成することができます。

しかし、globはリスト格納順がランダムなため、順番に並べるにはsortedを使用する必要があります。

今回は、testディレクトリに007以外の000~010.txt及び000~010.csvを格納しています(例ではcsvが一致しないため表示されません)。

from glob import globをお忘れなく。

import globだとソースのglob()をglob.glob()にしてください。

  files = glob("test/*.txt")
  for file in files :
     print("File = %s" %file)
  # File = folder/003.txt
  # File = folder/002.txt
  # File = folder/000.txt
  # File = folder/001.txt
  # File = folder/005.txt
  # File = folder/004.txt
  # File = folder/010.txt
  # File = folder/006.txt
  # File = folder/009.txt
  # File = folder/008.txt
  files = glob("test/*.txt")
  for file in sorted(files) :
     print("File = %s" %file)
  # File = folder/000.txt
  # File = folder/001.txt
  # File = folder/002.txt
  # File = folder/003.txt
  # File = folder/004.txt
  # File = folder/005.txt
  # File = folder/006.txt
  # File = folder/008.txt
  # File = folder/009.txt
  # File = folder/010.txt
スポンサーリンク

まとめ

今回はPythonのファイルを扱う際によく使うものを紹介しました。

os, pathlib, globは色んな場面で出てくるので覚えておいて損はないと思います。

メモとして残しておくと便利ですね。

これからも勉強してパイソニスタを目指しましょう!

↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村 投資ブログ お金(投資)へ
にほんブログ村

スポンサーリンク

コメント

タイトルとURLをコピーしました