Python で任意のファイル名を取得する

任意のディレクトリに存在するある拡張子のファイル名を取得する

解析屋として Python に触れている場合,あるディレクトリにある複数のファイルに関してを順番に処理したい 時が多々あります. こういう状況の度に検索しているのは効率が悪いので私なりのやり方をメモして置きます.

# ファイル操作
import glob
inputDir  = "../data/"
outputDir = "../data/Result/"

for inputPath in glob.glob(inputDir + '*.dat'):
  outputPath = inputPath.replace(inputDir, outputDir)
  適当な処理

上記の例では 「ある任意のディレクトリ (../data/) にある ある任意の拡張子 (.dat) のファイルまでのパスを inputpath という変数に入れ込んでいます.

また,私の場合,良く解析結果をファイルに書き出すことが多いのですが,その際には別のディレクトリに置く方が好きです. そのため, 先に出力先のディレクトリ (../data/outputdir) を宣言してしまい, inputpath を書き換える作業もしています. これには, 以下のコマンドを使用します.

inputPath.replace('変更する部分', '変更後の内容')

絶対パスからファイル名のみを取得する

上記の手法を使う場合,取得されるのはファイルパスすべてになります. ここからファイル名のみを取得したい場合以下のようにすると楽です.

>>> import os
>>> os.path.basename('hoge/foo/piyo.txt')
'piyo.txt'

また,ファイル名と拡張子を分けて取得したい場合,以下のような関数があります.

>>> import os
>>> os.path.splitext(os.path.basename('hoge/foo/piyo.txt'))
('piyo', '.text')