CV・NLPハマりどころメモ

画像認識と自然言語処理を研究する上でうまくいかなかったことと,その対策をまとめる自分用のメモが中心.

f-stringを使ってスマートにパスを生成する[Python]

Python3.6から使えるようになったf-stringを使って,スマートにパスを生成しよう.

かっこ悪いパスの生成

from datetime import datetime

now = datetime.now().strftime("%Y%m%d%H%M%S")

dst = "/root/output/" + now + "_result/hoge.txt"
print(dst)

>> /root/output/20190910091617_result/hoge.txt

変数nowの周囲に+や余計な括弧"が混入しているため,生成されるパス名が把握しづらい.

スマートなパスの生成

from datetime import datetime

now = datetime.now().strftime("%Y%m%d%H%M%S")

dst = f"/root/output/{now}_result/hoge.txt"
print(dst)

>> /root/output/20190910091749_result/hoge.txt

f-stringを使って文字列内に変数を埋め込んでパスを生成.

パスが一続きの文字列として記述されているため,生成されるパス名が把握しやすい.

さらにスマートなパスの生成

from pathlib import Path
from datetime import datetime

now = datetime.now().strftime("%Y%m%d%H%M%S")
outdir = f"/root/output/{now}_result"
fname = "hoge.txt"

dst = Path(outdir) / fname
print(dst)

>> /root/output/20190910093057_result/hoge.txt

Pathを使って,出力先フォルダPath(outdir)と出力ファイル名fnameを連結した.

パス生成の際,出力先フォルダと出力ファイル名の間に/があるため,フォルダ名とファイル名の区別がつき,わかりやすいと思う.