Pythonでpathlibを使用したファイル操作
はじめに
この記事はPythonでpathlibを使用した色々なファイル操作の方法を備忘録として残すことを目的に書きます。
この記事が他の人の参考になれば幸いです。
また、この記事の内容に間違った記載がありましたら、指摘していただけるとありがたいです。
環境
2021年01月13日時点。
名前 | バージョン |
---|---|
macOS Big Sur | 11.1 |
Python | 3.9.0 |
pathlibとは
pathlibとは、Pythonの標準ライブラリでPurePathクラスとPathクラスが提供されており、クラスやインスタンスを通してファイルを操作することができます。
PurePathクラスはI/Oを伴わない読み取りのみの時に使用し、PathクラスはPurePathを継承しており、追加でファイルの作成などができます。
この記事ではPathクラスのみを取り上げます。
pathlibを使用するためにpathlib
からPath
クラスをインポートし、引数にパスを与えてインスタンスを作成します。
Pathクラスから作成されたインスタンスはOSの環境に応じてPosixPath
かWindowsPath
になります。
from pathlib import Path
# Pathクラスのインスタンスの作成
current_path = Path('.')
absolute_path = Path('/etc')
# ホームディレクトリのインスタンスの作成
home_path = Path.home
# カレントディレクトリのインスタンスの作成
cwd_path = Path.cwd
パスの移動
/
演算子でパスの移動ができます。文字列の他にもPathオブジェクトを使用できます。
p = Path('.')
q = Path('hoge')
hoge_p = p / 'hoge'
hoge_q = p / q
一般
p = Path('./hoge/sample')
# partsプロパティはパスの構成要素をタプルで返す
print(p.parts) # => ('hoge', 'sample')
# resolveメソッドは絶対パスを返す
print(p.resolve()) # => /Users/sample/hoge/sample
# is_absoluteメソッドはパスが絶対パスかどうか調べる
print(p.is_absolute()) # => False
print(p.resolve().is_absolute()) # => True
# existsメソッドはパスが指すファイルかディレクトリが存在するか調べる
print(p.exists()) # => True
# is_fileメソッドはパスがファイルを指しているか調べる
print(p.is_file()) # => False
# is_dirメソッドはパスがディレクトリを指しているか調べる
print(p.is_dir()) # => True
# パスがディレクトリを指しているときに内容を返す
[print(child) for child in p.iterdir()]
# => hoge/sample/sample1.txt
# hoge/sample/sample2.txt
# hoge/sample/sample3.txt
ディレクトリを作成する
p = Path('./hoge/sample')
# 作成したいディレクトリのパス
new_dir_p = p / 'dir1'
# ディレクトリを作成する
new_dir_p.mkdir()
ファイル、ディレクトリを移動させる
p = Path('./hoge/sample/sample1.txt')
p.replace('./hoge/tmp/sample1.txt')