未熟学生エンジニアブログ

プログラミング・Web開発をする大学院生のブログ

pythonでファイルパスからファイル名のみを取り出して新しいファイルパスを作成する

環境

python3

やりたいこと

例えば、globなどで複数のファイルのファイルパスを取得して、そのファイルに何らかの変更を加えたファイルをちょっとファイルパスを変えて保存したいとします。

例えば、HTMLファイルから、HTMLタグを除去し、そのファイル名を./eliminated_tags/example.txt という形で保存したい時を考えます。

このとき、以下のようなディレクトリ構成であるとします。

  • eliminate_html_tags.py
  • html
    • example1.html
  • eliminated_tags
    • ここにHTMLタグを削除したファイルを置きたい
import re
import glob

filenames = glob.glob("./html/*")
for filename in filenames:
    with open(filename, 'r') as html_f:
        html = html_f.read()
        text = re.sub(r'<[^>]*>','\n',html)
        text_filename = re.search(r"/[^/]*\.txt",filename).group().replace('/','').replace('.html','.txt')
        with open('./eliminated_tags/'+text_filename,'w') as text_f:
            text_f.write(text)

上のコードの中の以下の3行がポイントです。 re.searchで、'/example.html'の部分を取り出し、
str.replaceで、'example'の部分を取り出しています。

text_filename = re.search(r"/[^/]*\.txt",filename).group().replace('/','').replace('.html','.txt')
        with open('./eliminated_tags/'+text_filename,'w') as text_f:
            text_f.write(text)

このように書くと、

  • eliminate_html_tags.py
  • html
    • example1.html
    • example2.html
    • ...
  • eliminated_tags
    • example1.txt
    • example2.txt
    • ...

といったような形で保存できます!