Pythonにおけるファイルとディレクトリ(フォルダ)の操作を学習しましょう。存在チェック、削除、コピーなどの例を列挙していきます。
ファイル、ディレクトリの存在チェック
5行目のexistsでファイルもしくはディレクトリの存在チェックを行っています。このexistsはファイルでもディレクトリでも存在さえしていればTrueを返すので、8行目と11行目でそれぞれのチェックを行っています。
import os filepath = 'c:/python' if os.path.exists(filepath): print('指定のファイル、またはディレクトリが存在しています。') if os.path.isfile(filepath): print('指定のパスはファイルです。') if os.path.isdir(filepath): print('指定のパスはディレクトリです。') else: print('指定のファイル、またはディレクトリが存在していません。')
指定のファイル、またはディレクトリが存在しています。 指定のパスはディレクトリです。
ディレクトリの作成と削除
まずは下記サンプルをご覧ください。show_dir関数は指定パス以下のディレクトリを全て表示させる関数となります。ディレクトリの作成・削除の確認の為に使用しています。
import os import shutil def show_dir(path): print('====================================') for dirpath, dirnames, filenames in os.walk(path): for dirname in dirnames: print(os.path.join(dirpath, dirname)) tmpdir = 'c:/python/tmp' os.mkdir(tmpdir) os.makedirs('c:/python/tmp/mkdir1/mkdir2/mkdir3') show_dir(tmpdir) os.rmdir('c:/python/tmp/mkdir1/mkdir2/mkdir3') show_dir(tmpdir) # os.removedirs(tmpdir) shutil.rmtree(tmpdir)
13行目で単一のディレクトリを作成しています。引数にはパスを指定してください。14行目のmakedirsは途中のディレクトリが存在していなくてもパス通りの階層で作成してくれます。
import os import shutil def show_dir(path): print('====================================') for dirpath, dirnames, filenames in os.walk(path): for dirname in dirnames: print(os.path.join(dirpath, dirname)) tmpdir = 'c:/python/tmp' os.mkdir(tmpdir) os.makedirs('c:/python/tmp/mkdir1/mkdir2/mkdir3') show_dir(tmpdir) os.rmdir('c:/python/tmp/mkdir1/mkdir2/mkdir3') show_dir(tmpdir) # os.removedirs(tmpdir) shutil.rmtree(tmpdir)
17行目では先ほど作成したmkdir3を削除しています。21行目のrmtreeは、再帰的のディレクトリの削除を行います。コメントアウトされている20行目のremovedirsは、削除対象のディレクトリが空でないとエラーとなるのでご注意ください。大事なファイルなどを誤って削除してしまうのを防ぐ効果もあります。
==================================== c:/python/tmp\mkdir1 c:/python/tmp\mkdir1\mkdir2 c:/python/tmp\mkdir1\mkdir2\mkdir3 ==================================== c:/python/tmp\mkdir1 c:/python/tmp\mkdir1\mkdir2
ファイル、ディレクトリのコピー
ファイル、ディレクトリをコピーするにはshutilモジュールを使用します。4行目は単一のファイルもしくはディレクトリのコピーを行い、5行目は再帰的にディレクトリをコピーします。
import os import shutil shutil.copy('c:/python/src.txt', 'c:/python/dest.txt') shutil.copytree('c:/python', 'c:/python_backup')