10.2 ディレクトリ
ほとんどのオペレーティングシステムにおいて、ファイルはディレクトリ(フォルダ)の階層構造のなかにあります。標準ライブラリの os モジュールは、ファイルだけでなく、ディレクトリ操作のための便利な関数も多数提供しています。
10.2.1 mkdir() による作成
Section titled “10.2.1 mkdir() による作成”新しいディレクトリを作るには、os.mkdir() を使います。
import os
# 'poems'という名前のディレクトリを作成するos.mkdir('poems')
# ディレクトリが作成されたか確認するprint(os.path.exists('poems')) # True10.2.2 rmdir() による削除
Section titled “10.2.2 rmdir() による削除”空のディレクトリを削除するには、os.rmdir() を使います。
import os
# 先ほど作成した'poems'ディレクトリを削除するos.rmdir('poems')
print(os.path.exists('poems')) # False10.2.3 listdir() による内容リストの作成
Section titled “10.2.3 listdir() による内容リストの作成”ディレクトリの中に含まれるファイルやサブディレクトリのリストを取得するには、os.listdir() を使います。
import os
# テスト用にディレクトリとファイルを作成os.mkdir('poems')os.mkdir('poems/mcintyre')fout = open('poems/mcintyre/the_good_man', 'w')fout.write('Cheerful and happy was his mood...')fout.close()
# 'poems'ディレクトリの内容をリストアップするprint(os.listdir('poems'))# 出力: ['mcintyre']
# サブディレクトリの内容をリストアップするprint(os.listdir('poems/mcintyre'))# 出力: ['the_good_man']10.2.4 chdir() によるカレントディレクトリの変更
Section titled “10.2.4 chdir() によるカレントディレクトリの変更”プログラムの作業の起点となるカレントディレクトリを別のディレクトリに移動するには、os.chdir() を使います。
import os
# カレントディレクトリを 'poems' に移動するos.chdir('poems')
# カレントディレクトリ ('.') の内容を確認するprint(os.listdir('.'))# 出力: ['mcintyre']10.2.5 glob() によるパターンにマッチするファイルのリスト作成
Section titled “10.2.5 glob() によるパターンにマッチするファイルのリスト作成”複雑な正規表現を使わずに、Unixシェルの規則(ワイルドカードなど)を使ってファイルやディレクトリの名前を検索したい場合は、標準ライブラリの glob モジュールを使います。
主なマッチング規則は以下の通りです:
*: すべての文字列にマッチする。?: 任意の1文字にマッチする。[abc]: a、b、cのいずれか1文字にマッチする。[!abc]: a、b、c以外の文字にマッチする。
import glob
# 'm'で始まるすべてのファイル/ディレクトリを取得print(glob.glob('m*'))# 出力: ['mcintyre']
# ちょうど2文字の名前を持つファイル/ディレクトリを取得print(glob.glob('??'))# 出力: []
# 'm'で始まり、その後に任意の6文字が続き、'e'で終わる8文字の名前を取得print(glob.glob('m??????e'))# 出力: ['mcintyre']
# 'k', 'l', 'm'のいずれかで始まり、'e'で終わる名前を取得print(glob.glob('[klm]*e'))# 出力: ['mcintyre']