2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonのファイルおよびフォルダー操作

Last updated at Posted at 2021-02-26

Pythonでよく使うファイル、フォルダーの操作のまとめ。標準ライブラリーのPathまたはshutilを使います。Pathオブジェクトとは何かについてはこちら

Pathオブジェクトの作り方

インポートとオブジェクト作成
from pathlib import Path
import shutil

# カレントディレクトリーにあるfile.txtを取得。以下の3つは全て同じ結果。
p = Path('file.txt')
p = Path('./file.txt')
p = Path() / 'file.txt'

# 絶対パスでもOK
p = Path('c:/users/user01/documents/file.txt')

# フォルダーもOK
f = Path('c:/users/user01/documents')

パスの情報取得

やること やり方
ファイル名 Path.name
ファイル名(拡張子なし) Path.stem
拡張子 Path.suffix
存在するかどうか Path.exists()
ファイルかどうか Path.is_file()
フォルダーかどうか Path.is_dir()
絶対パス Path.resolve()
親フォルダー Path.parent
パターンに一致するか Path.match()
ファイルサイズ(Byte) Path.stat().st_size

フォルダー内のパス取得

やること やり方
フォルダー内パスのイテレーション Path.iterdir()
パターンに一致するパス取得 Path.glob()

ファイル、フォルダーのリネーム、コピー等

なぜPathだけでできないのか…

やること やり方
Path
やり方
shutil
備考
リネーム Path.rename()
Path.replace()
リネーム後のファイルが存在する場合、Path.rename()はFileExistsError、Path.replace()は上書き。
ファイルコピー shutil.copy() ・コピー先ファイルが存在する場合は上書き
・コピー先フォルダーが存在しない場合はエラー
・戻り値は新しく作成したファイル
ファイル移動 shutil.move() 引数はstr(Python 3.9からPathオブジェクトも可)。引数dstはフォルダーでもファイルでもOK。移動先ファイルが存在すれば上書き。
ファイル削除 Path.unlink()
フォルダー作成 Path.mkdir() ・戻り値はNone
parents=True で途中の親フォルダーも作成 
exist_ok=True で既にフォルダーが存在してもエラーとしない
フォルダーコピー shutil.copytree() srcフォルダーの中身をdstフォルダーにコピー(dstの下にsrcがコピーされる訳ではない)
dstフォルダーが存在しなくてもOK
dirs_exist_ok=Trueで既にフォルダーが存在してもエラーとしない
フォルダー移動 shutil.move()
フォルダー削除 shutil.rmtree()

その他

演算子 /

# 演算子/で文字列と結合して新しいPathを生成
Path() / "folder1 / file1.txt"

ファイルの親フォルダー

# 実行中のファイルの親フォルダー
# Path() だとカレントディレクトリー(Path.cwd())となり、ファイルからの相対パスを設定できないこともある
Path(__file__).parent 

参考

2
5
1

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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?