Pythonでのファイル・フォルダ操作完全ガイド|初心者向け

プログラミング

はじめに

Pythonを使ったファイル・フォルダ操作は、システム管理やスクリプト自動化に欠かせないスキルだ。
とはいえ、「どのモジュールを使えばいいのか?」という問題に直面することは多い。osshutilpathlib… どれも使えるが、適材適所で活用しないとコードが冗長になったり、可読性が下がったりする。

今回は、そんな迷いを払拭するために、自身の経験をもとに整理してみる。


スポンサーリンク
スポンサーリンク

ファイル操作の基本

ファイル操作をするなら、まず知っておくべきはopen()だろう。基本的な使い方は次の通り。

# ファイル作成・書き込み
with open("sample.txt", "w") as f:
    f.write("これはテストファイルです")

ポイントはwith構文を使うこと。これにより、ファイルを開いた後、確実に閉じられるため、リソースリークを防げる。

削除する場合はos.remove()を使う。

import os
os.remove("sample.txt")  # ファイルを削除

削除には注意が必要で、一度消したファイルは基本的に元に戻せない。間違って実行すると後悔するので、削除前にos.path.exists()で存在チェックすると良い。


ファイルの移動とコピー

ファイルを移動したい場合、shutil.move()が便利だ。

import shutil
shutil.move("test.txt", "backup/test.txt")  # test.txtをbackupフォルダへ移動

コピーするならshutil.copy()を使う。

shutil.copy("test.txt", "test_copy.txt")  # test.txtをtest_copy.txtにコピー

違いに注意!
shutil.move() → ファイルを移動(元の場所には残らない)
shutil.copy() → ファイルをコピー(元のファイルはそのまま)


ファイルの読み書き:pathlibの活用

最近のPythonでは、pathlibを使ったファイル操作が推奨されることが多い。

from pathlib import Path

# 読み込み
path = Path("sample.txt")
text = path.read_text()  # ファイルの内容を文字列として取得
print(text)

# 書き込み
path.write_text("新しい内容を書き込み")

pathlibのメリットは、オブジェクト指向的に書けること。open()を使うよりスッキリしたコードになる。


フォルダ操作の基本

フォルダを作るならos.makedirs()、削除するならos.rmdir()またはshutil.rmtree()を使う。

import os
os.makedirs("new_folder")  # フォルダ作成
os.rmdir("new_folder")  # 空のフォルダを削除

ただし、フォルダにファイルが残っている場合、os.rmdir()では削除できない。その場合はshutil.rmtree()を使う。

import shutil
shutil.rmtree("new_folder")  # フォルダごと削除(ファイルがあってもOK)

フォルダ内のファイル一覧を取得する

フォルダの中のファイルを取得するなら、os.listdir()pathlib.Path.iterdir()が便利だ。

import os
files = os.listdir("my_folder")
print(files)  # フォルダ内のファイル一覧を取得

もしくは、pathlibでより直感的に書ける。

from pathlib import Path
folder = Path("my_folder")

for file in folder.iterdir():
    print(file)  # 各ファイル/フォルダのパスを出力

パス操作:絶対パスと相対パス

ファイル操作でパスを扱う際、os.pathpathlibのどちらを使うか迷うことがある。

絶対パスを取得するなら、os.path.abspath()を使う方法が一般的だ。

import os
print(os.path.abspath("test.txt"))  # test.txtの絶対パスを取得

しかし、最近はpathlibを使う方がシンプル。

from pathlib import Path
path = Path("test.txt").resolve()  # 絶対パスを取得
print(path)

名前変更と権限変更

ファイルの名前を変更するなら、os.rename()が手っ取り早い。

import os
os.rename("old_name.txt", "new_name.txt")  # ファイル名変更

また、権限を変更するなら、os.chmod()を使う。例えば、読み取り専用にする場合は以下のように書く。

import os
import stat

os.chmod("test.txt", stat.S_IREAD)  # 読み取り専用に変更

コマンド一覧表

操作内容 モジュール メソッド/関数
作成 built-in open()
削除 os remove()
移動 shutil move()
コピー shutil copy()
読み込み pathlib Path.read_text()
書き込み pathlib Path.write_text()
メタデータ取得 os stat()
作成 os makedirs()
削除 os rmdir()
フォルダの内容削除 shutil rmtree()
フォルダの内容リスト os listdir()
移動 os chdir()
ディレクトリツリー pathlib Path.mkdir(parents=True)
ファイル一覧 pathlib Path.iterdir()
名前変更 os rename()
権限変更 os chmod()
メタデータ取得 pathlib Path.stat()
存在確認 os.path exists()
存在確認 pathlib Path.exists()
パス情報取得 os.path abspath()
パスの結合 os.path join()
絶対パス化 os.path normpath()

まとめ

Pythonでのファイル・フォルダ操作は、osshutilpathlibを適材適所で使い分けるのがポイントだ。

  • 簡単なファイル操作:open(), os.remove(), shutil.copy()
  • フォルダの操作:os.makedirs(), shutil.rmtree()
  • パス操作・メタデータ取得:os.path.abspath(), pathlib.Path()
  • モダンな書き方:pathlibを活用すると、可読性の高いコードになる

コメント