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
- ...
といったような形で保存できます!