ファイルパスからファイル名を取得するPythonプログラム
この記事では、Python プログラミング言語で指定されたファイル パスからファイル名を取得するプログラムを見ていきます。自動化中に、ファイル パスから抽出したファイル名が必要になる場合があります。
以下の知識を持っておくとよいでしょう。
- Python OSモジュール
- Pythonパスモジュール
- 正規表現
- 組み込みのrsplit()
方法 1: Python OSモジュール
例 1: 拡張子なしのパスからファイル名を取得しますsplit()
パイソンの スプリット() この関数は、定義されたセパレータを使用して指定されたテキストを文字列のリストに分割し、指定されたセパレータで分割された文字列のリストを返します。
Python3
import> os> path> => 'D:homeRiot GamesVALORANTliveVALORANT.exe'> print> (os.path.basename(path).split(> '/'> )[> -> 1> ])> |
出力:
VALORANT.exe
例 2: os.path.basename を使用してファイル パスからファイル名を取得する
指定されたパスのベース名は、組み込みの Python 関数 os.path.basename() を使用して取得できます。関数 path.basename() は、パス引数を受け取り、パス名 path のベース名を返します。
Python3
import> os> file_path> => 'C:/Users/test.txt'> # file path> # using basename function from os> # module to print file name> file_name> => os.path.basename(file_path)> print> (file_name)> |
出力:
test.txt
例 3: OS を使用してファイル パスからファイル名を取得します。 分割テキスト
このメソッドは最終的に拡張子付きのファイルになりますが、拡張子なしのファイル名だけ、または拡張子だけが必要な場合はどうなるでしょうか。ここ 分割テキスト OSモジュールの機能が登場します。このメソッドはファイル名とテキストを含む文字列のタプルを返し、インデックス作成を利用してそれらにアクセスできます。
例:
Python3
import> os> file_path> => 'C:/Users/test.txt'> file_name> => os.path.basename(file_path)> file> => os.path.splitext(file_name)> print> (> file> )> # returns tuple of string> print> (> file> [> 0> ]> +> file> [> 1> ])> |
出力:
('test', '.txt') test.txt 方法 2: 次を使用してファイル パスからファイル名を取得します パスリブ
Python Pathlib パッケージは、多くのオペレーティング システムに適したセマンティクスを持つファイル システム パスを記述する多数のクラスを提供します。 Python の標準ユーティリティ モジュールには、このモジュールが含まれています。それでも 幹 ファイルに拡張子が必要な場合は、name 属性を使用して、拡張子なしでリンクからファイル名を抽出できるようにするユーティリティ属性の 1 つです。
例:
Python3
from> pathlib> import> Path> file_path> => 'C:/Users/test.txt'> # stem attribute extracts the file> # name> print> (Path(file_path).stem)> # name attribute returns full name> # of the file> print> (Path(file_path).name)> |
出力:
test test.txt
方法 3: 次を使用してファイル パスからファイル名を取得します 正規表現
正規表現を使用して、ファイル名を特定のパターンと一致させることができます。
Pattern - [w]+?(?=.)
このパターンは3パターンに分かれます
- [w] はセット内の単語と一致します
- +?以前に 1 回だけ存在する文字列と一致します ? キーワード
- (?=) は改行を含まないすべての文字に一致し、必ず で停止します。
例:
Python3
import> re> file_path> => 'C:/Users/test.txt'> pattern> => '[w-]+?(?=.)'> # searching the pattern> a> => re.search(pattern, file_path)> # printing the match> print> (a.group())> |
出力:
test
方法 4: 組み込みの Python 関数 split() を使用してファイル パスを個々のコンポーネントのリストに分割し、rsplit() メソッドを使用します。
組み込みの Python 関数 split() を使用してファイル パスを個々のコンポーネントのリストに分割し、rsplit() メソッドを使用して最後のコンポーネント (ファイル名と拡張子) をリストに分割できます。ファイル名と拡張子が含まれます。その後、インデックス作成を使用して、このリストからファイル名を抽出できます。
これを行う方法の例を次に示します。
Python3
def> get_file_name(file_path):> > file_path_components> => file_path.split(> '/'> )> > file_name_and_extension> => file_path_components[> -> 1> ].rsplit(> '.'> ,> 1> )> > return> file_name_and_extension[> 0> ]> # Example usage> file_path> => 'C:/Users/test.txt'> result> => get_file_name(file_path)> print> (result)> # Output: 'test'> |
出力: テスト
このアプローチでは、まず、split() 関数を使用して、ファイル パスを「/」文字で区切られた個々のコンポーネントのリストに分割します。次に、rsplit() メソッドを使用して、最後のコンポーネント (ファイル名と拡張子である必要があります) を、区切り文字として「.」文字を使用してファイル名と拡張子を含むリストに分割します。次に、インデックスを使用してこのリストからファイル名が抽出されます。この方法は、ファイル パスが、split() メソッドと rsplit() メソッドを使用して解析できる形式である限り、任意のファイル パスと拡張子に対して機能します。