【Python】ファイルやフォルダ名の操作や検索
この記事では、ディレクトリやファイルに関連した内容について記載していきます。
実施時の環境は以下です。
- Python 3.7.4
- PyCharm 2019.2
【一覧】
この記事に記載する処理について、使用するライブラリ毎に、一覧にまとめておきます。
今回使用するライブラリはPythonに標準的にあるライブラリのため、インストールは不要です。
ライブラリ:os.path
コード | 説明 |
---|---|
basename() | ファイル名の取得 |
dirname() | ディレクトリを取得 |
split() | ディレクトリとファイル名に分割 |
splitext() | ファイル名と拡張子に分割 |
join() | 文字列をパス形式で結合 |
exists() | パスが存在するか確認 |
isfile() | ファイルが存在するか確認 |
isdir() | ディレクトリが存在するか確認 |
ライブラリ:glob
コード | 説明 |
---|---|
glob() | フォルダ内のファイルをリストで取得 |
【コードの説明】
ライブラリ:os.path
以下のコードはライブラリ「os.path」にある処理なので、使用する際は「os.path」をインポートしてください。
basename()
「basename」ファイルパスからファイル名を取得します。
使い方は下記の様に、引数にパスを渡すと、ファイル名が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' file_name = os.path.basename(path) # file_name >> test.txt
dirname()
「dirname」はファイルパスからディレクトリ部分のパスを取得します。
使い方は下記の様に、引数にパスを渡すと、ディレクトリ部分が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' dir_name = os.path.dirname(path) # dir_name >> D:\python\testdir
split()
「split」はファイルパスをディレクトリとファイル名に分割したものを取得します。
使い方は下記の様に、引数にパスを渡すと、ディレクトリとファイル名が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' dir_file = os.path.split(path) # dir_file >> ('D:\\python\\testdir', 'test.txt')
splitext()
「splitext」はファイルパスをファイル名(ディレクトリを含む)と拡張子に分割したものを取得します。
使い方は下記の様に、引数にパスを渡すと、ファイル名と拡張子が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' file_ext = os.path.splitext(path) # file_ext >> ('D:\\python\\testdir\\test', '.txt')
join()
「join」は引数をパス形式で結合したものを取得します。
使い方は下記の様に、引数に文字列を渡すと、1つのパス形式が返されます。
import os.path dir_name = 'D:\\python\\testdir' file_name = 'test.txt' path = os.path.join(dir_name, file_name) # path >> D:\python\testdir\test.txt
渡す引数は、2つ以上であればいくつでも大丈夫です。
import os.path dir_name_1 = 'D:\\python' dir_name_2 = 'testdir' file_name = 'test.txt' path = os.path.join(dir_name_1, dir_name_2, file_name) # path >> D:\python\testdir\test.txt
exists()
「exists」は引数のパス先が存在する場合「True」しないときは「False」を取得します。
使い方は下記の様に、引数にパスを渡すと、「True」or「False」が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' exist = os.path.exists(path) # exist >> False
上記の例は存在しない場合です。
isfile()
「isfile」は引数のパス先のファイルが存在する場合「True」しないときは「False」を取得します。
使い方は下記の様に、引数にパスを渡すと、「True」or「False」が返されます。
import os.path path = 'D:\\python\\testdir\\test.txt' exist = os.path.isfile(path) # exist >> True
上記の例は存在する場合です。
また、ファイルの存在を確認するため、ディレクトリを渡すと「False」になります。
下記の例では、フォルダは存在しますが、「False」が返されています。
path = 'D:\\python\\testdir' exist = os.path.isfile(path) # exist >> False print(f'exist >> {exist}')
isdir()
「isdir」は引数のパス先のディレクトリが存在する場合「True」しないときは「False」を取得します。
使い方は下記の様に、引数にパスを渡すと、「True」or「False」が返されます。
import os.path path = 'D:\\python\\testdir' exist = os.path.isdir(path) # exist >> True
上記の例は存在する場合です。
「isfile」とは逆で、ファイルパスを引数にするとFalse」になります。
下記の例では、フォルダは存在しますが、「False」が返されています。
import os.path path = 'D:\\python\\testdir\\test.txt' exist = os.path.isdir(path) # exist >> False
ライブラリ:glob
以下のコードはライブラリ「glob」にある処理なので、使用する際は「glob」をインポートしてください。
glob()
「glob」はフォルダ内のファイルやフォルダ名をリストで取得します。
フォルダ内のみを取得する方法と、再帰的にサブフォルダを含めて検索する方法があります。
フォルダ内のみの取得方法が下記です。
検索したいフォルダに「\\*」をつけて引数にすると、フォルダ内のフォルダとファイルを全て取得して、リストを返します。
import glob path = 'D:\\Python\\testdir' file_list = glob.glob(path + '\\*') # file_list >> ['D:\\Python\\testdir\\aaa', 'D:\\Python\\testdir\\test.txt']
フォルダ内のサブフォルダを含めた取得方法が下記です。
検索したいフォルダに「\\**」をつけて引数にし、「recursive=True」にするとサブフォルダを含めたフォルダ内内のフォルダとファイルを全て取得して、リストを返します。
import glob path = 'D:\\Python\\testdir' file_list = glob.glob(path + '\\**', recursive=True) # file_list >> ['D:\\Python\\testdir\\', 'D:\\Python\\testdir\\aaa', 'D:\\Python\\testdir\\aaa\\bbb.txt', 'D:\\Python\\testdir\\test.txt']
【参考サイト】
今回の記事の作成にあたり、下記サイトを参考にさせて頂きました。
note.nkmk.me
www.gesource.jp
note.nkmk.me