ファイルシステムの操作

このページでは、ファイルの存在チェックやコピー、移動、削除について学びます。標準ライブラリのosモジュールを使用します。

ファイル/ディレクトリの存在チェック

指定したパスが存在するかどうかはospath.existsメソッドを使用します。いずれもスクリプトの実行ディレクトリがカレントディレクトリとなります。

また、ファイルかディレクトリかの判定はそれぞれos.path.isfileメソッド、os.path.isdirメソッドを使用します。

import os
path = 'sample.py'

if os.path.exists(path):
    print('指定したパスは存在します')

    if os.path.isfile(path):
        print('ファイルです')
    if os.path.isdir(path):
        print('ディレクトリです')
else:
    print('指定したパスは存在しません')

ファイル/ディレクトリの作成と削除

ファイルの削除

os.removeメソッドにpathを指定するとファイルの削除ができます。

なお、pathがディレクトリの場合はOSErrorが送出されます。ディレクトリを削除する場合は後述のrmdirを使用してください。

import os
os.remove('file1.txt')

ディレクトリの作成と削除

単一階層のディレクトリを作成する場合はos.mkdirメソッドを、複数階層を作成する場合はos.makedirsを使用します。
また、逆にディレクトリを削除する場合はそれぞれos.rmdir、os.removedirsを使用します。

import os

# ディレクトリを作成する
os.mkdir('dir_1')
os.makedirs('dir_2/dir_3')

# ディレクトリを削除する
os.rmdir('dir_1')
os.removedirs('dir_2/dir_3')

ファイル/ディレクトリの移動とコピー

コピーと移動の場合はshutilモジュールを使用します。
単一のファイルかディレクトリの場合はcopyメソッドを、ディレクトリごと再帰的にコピーする場合はcopytreeメソッドを使用します。

import os
import shutil
shutil.copy('sample.txt', 'sample2.txt') # 単一コピー
shutil.copytree('dir_1/', 'dir_2/') # ディレクトリごと再帰的にコピー