pythonでフォルダやファイルを作成したり削除する方法を解説します。
フォルダ・ファイルの存在チェック
存在チェックの必要性
作成・削除する前に同じパスのフォルダやファイルが存在するか確認する必要があります。
存在チェックをしないとエラーが発生することがあります。
エラーが発生するケース
- 追加の時に同じファイル・フォルダがあるとエラー
- 削除の時にファイル・フォルダがないとエラー
存在チェックコード
ファイルの存在確認には次のライブラリを使います。
os.path.exists()
実際のコードはこんな感じになるかと思います。
import os
path = "C:/Users/user/Desktop/【フォルダまたはファイル名】"
if os.path.exists(path):
print("ファイルがある場合の操作")
else:
print("フィルがない場合の操作")
os.path.exists(path)
このコードは"C:/Users/user/Desktop/【フォルダまたはファイル名】"
が存在するか確認しているコードです。
実行すると該当のフォルダがない場合には次のように表示されます。
フィルがない場合の操作
作成
フォルダの作成
フォルダの作成には次のライブラリを使います。
os.mkdir()
前述コードを「ファイルが存在しない場合にはファイルを成する」にすると次のようになります。
import os
path = "C:/Users/user/Desktop/【フォルダまたはファイル名】"
if os.path.exists(path):
print("ファイルがある場合の操作")
else:
os.mkdir(path)
os.mkdir(path)
で"C:/Users/user/Desktop/【フォルダまたはファイル名】"
を作成します。
実行すると該当のフォルダが作成されます。
ファイルの作成
ファイルを作成する場合には
f = open(path, 'w')
を使います。 前述コードに「ファイルが存在しない場合にはフォルダを成する」コードを追加すると次のようになります。
import os
path = "C:/Users/user/Desktop/【フォルダまたはファイル名】"
if os.path.exists(path):
print("ファイルがある場合の操作")
else:
f = open(path, 'w')
f.write('')
f.close()
"C:/Users/user/Desktop/【フォルダまたはファイル名】"
を作成します。
実行すると該当の空ファイルが作成されます。
ファイルの中身まで記述する場合にはf.write('')
の部分にファイルの内容を記述します。
削除
まずは先ほどのフォルダとファイルの作成コードから削除するためのファイルとフォルダを用意してみます。
import os
path = "C:/Users/user/Desktop/削除対象フォルダ"
if not os.path.exists(path):
os.mkdir(path)
for i in range(100):
folder_path = path + "/" + str(i)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
for j in range(100):
file_path = folder_path + "/" + str(j) + ".py"
if os.path.exists(folder_path):
f = open(file_path, 'w')
f.write('')
f.close()
こんな感じで削除対象のフォルダとファイルを作成してみました。
空のフォルダの削除
空のファルダを削除する場合には次のように記述します。
import os
path = "C:/Users/user/Desktop/削除対象フォルダ"
if os.path.exists(path):
if os.path.isdir():
os.removedirs(path)
ただし、フォルダが空でないと次のようなエラーが発生します。
OSError: [WinError 145] ディレクトリが空ではありません。: 'C:/Users/user/Desktop/削除対象フォルダ'
基本的にos.removedirs(path)
を単発で使用することは少なく、使用する場合には再起関数などと組み合わせて使う場合が多いです。
ファイルの削除
ファイルを削除する場合には次のように記述します。
import os
path = "C:/Users/user/Desktop/削除対象フォルダ/01/01.py"
if os.path.exists(path):
if os.path.isfile():
os.remove(path)
フォルダの削除と同じくプログラム上でこちらのコードを単発で使用することは少なく、関数内に記述して使うことが多いです。
フォルダ内の全てのファイル・フォルダを削除
削除対象のフォルダを中身のファイルやフォルダごと削除する場合にはshutil
ライブラリを使えば簡単です。
実際の削除コードは次のようになりますが、実行した場合には指定した全てのフォルダとファイルが削除されるので注意して下さい。
import shutil
path = "C:/Users/user/Desktop/削除対象フォルダ"
shutil.rmtree(path)
再起関数を定義して削除
実際にプログラムでフォルダやファイルを操作する場合は次のように、再起関数を定義してあげてフォルダやファイルの区分、拡張子や名称などによって処理を分岐することが多いと思います。
import os
#削除のための関数を定義
def func_remove(target_path):
if os.path.exists(target_path):
for p in os.listdir(target_path):
next_target_path = target_path + "/" + p
if os.path.isdir(next_target_path):
#フォルダの場合
#配下にあるファイルとフォルダを処理(再帰処理)
func_remove(next_target_path)
#フォルダを削除
os.removedirs(next_target_path)
else:
#ファイルの場合(拡張子などの条件分岐で削除する時はここにif文)
os.remove(next_target_path)
path = "C:/Users/user/Desktop/削除対象フォルダ"
func_remove(path)
プログラムで作成・削除を行うケースとしては規則的かつ大量にファイルやフォルダを作成・削除するケースが想定されますね!