Pythonの基礎 - ディレクトリ

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2021年11月22日 (月) 18:32時点におけるWiki (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

概要

Pythonでは、ディレクトリに含まれるファイルの一覧を取得したり、ディレクトリ名を変更したりすることができる。


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

ディレクトリの作成

ディレクトリを新規作成する場合は、mkdir関数を使用する。

mkdir関数は、第1引数に指定したパスが示すディレクトリを新規作成する。
省略可能な第2引数には、新規作成するディレクトリの権限を設定する。(省略された場合、8進数で0o777が設定される)

 os.mkdir(path, mode = 0o777, *, dir_fd = None)


 import os
 
 path = './test/movie'
 os.mkdir(path)


※注意
mkdir関数は、中間ディレクトリを作成することができない。
例えば、/home/hoge/img/backディレクトリを作成する場合、/home/hoge/imgディレクトリが存在していない時は、例外FileNotFoundErrorが発生する。
また、新規作成するディレクトリが既に存在する場合は、例外FileExistsErrorが発生する。

中間ディレクトリも同時に作成する

中間ディレクトリも同時に新規作成する場合、osモジュールのmakedirs関数を使用する。

第1引数に指定したパスが示すディレクトリを新規作成する。
省略可能な第2引数には、新規作成するディレクトリの権限を設定する。(省略した場合は、8進数で0o777が設定される)
省略可能な第3引数にTrueを指定する場合、新規作成するディレクトリが既に存在してもエラーが発生しない。
新規作成するディレクトリが既に存在する場合、引数を省略するか、明示的にexist_ok = Falseを指定すると例外FileExistsErrorが発生する。

 os.makedirs(name, mode = 0o777, exist_ok = False)


以下の例では、./test/movie/backディレクトリを新規作成している。
./test/movie/backディレクトリが存在しない場合でも、中間ディレクトリである./test/movieディレクトリを作成後、指定のパスのディレクトリが作成される。

 import os
 
 path = './test/movie/back'
 os.makedirs(path, exist_ok = True)


ディレクトリの削除

ファイルを削除する場合は、osモジュールのrmdir関数を使用する。

rmdir関数は、第1引数に指定したパスが示すファイルを削除する。

ただし、ディレクトリを削除する場合は、ディレクトリの中身が空である必要があることに注意する。
削除するディレクトリが空ではない場合、例外OSErrorが発生する。

 os.rmdir(path *, dir_fd = None)


存在しないファイルを削除する場合、例外FileNotFoundErrorが発生する。

 import os
 
 path = './test/doc'
 os.rmdir(path)


ディレクトリとディレクトリの中身の一括削除

ディレクトリとディレクトリ内に存在するファイルを一括して削除する場合、shutilモジュールのrmtree関数を使用する。

第1引数に指定したパスが示すディレクトリを削除する。
ディレクトリ内にファイルやディレクトリが含まれている場合は、一括削除する。

 shutil.rmtree(path, ignore_errors = False, onerror = None)


 import shutil
 
 path = './test/movie'
 shutil.rmtree(path)



ディレクトリの作成 / 削除 (pathlibモジュールの使用)

ディレクトリの作成 (pathlibモジュールの使用)

ディレクトリを新規作成する場合は、pathlibモジュールにあるPathクラスのmkdirメソッドを使用する。

省略可能な第1引数には、新規作成するディレクトリの権限を設定する。(省略された場合は、8進数で0o777が設定される) 省略可能な第2引数にTrueを指定する場合、中間ディレクトリを自動的に作成する。 省略可能な第3引数にTrueを指定する場合、新規作成するディレクトリが存在していてもエラーにはならない。

 Path.mkdir(mode=0o777, parents=False, exist_ok=False)


以下の例では、新規作成するディレクトリを示すパスからPathクラスのインスタンスを生成した後、mkdirメソッドを使用している。
mkdirメソッドは中間ディレクトリを自動的に作成するため、中間ディレクトリである./testディレクトリが存在しない場合は、
./testディレクトリを作成した後、指定のパスのディレクトリを作成する。

 import pathlib
 
 p = pathlib.Path('./test/back')
 p.mkdir(parents = True)


ディレクトリの削除 (pathlibモジュールの使用)

ディレクトリを削除する場合、pathlibモジュールにあるPathクラスのrmdirメソッドを使用する。

ただし、ディレクトリは空である必要がある。
削除するディレクトリが空ではない場合、例外OSErrorが発生する。

 Path.rmdir()


以下の例では、削除するディレクトリを示すパスからPathクラスのインスタンスを作成した後、rmdirメソッドを使用している。

 import pathlib
 
 p = pathlib.Path('./test/movie')
 p.rmdir()