path = '~/.config/remind_task/tasks.yml'
dir_name = os.path.dirname(path)
os.makedirs(dir_name, exist_ok=True) # 上位ディレクトリが存在しなければ掘る
with open(path, mode="w") as f:
f.write("hoge")
このようにファイルを開きファイルを作成するとホームディレクトリの.config/remind_task/tasks.yml
にファイルが作成されると思ってしまう。
上のコードを実行するとファイルは作成される。しかし無い。
> cat ~/.config/remind_task/tasks.yml
cat: /Users/atu/.config/remind_task/tasks.yml: No such file or directory
しかしファイルは作成されている。どこにあるのか探し回った結果、カレントディレクトリに作られていた。
この場合は/Users/atu/Documents/python/remind_task/~/.config/remind_task/tasks.yml
にあった。
> cat "/Users/atu/Documents/python/remind_task/~/.config/remind_task/tasks.yml"
hoge
チルダで始まるパスを扱う場合には以下のようにすればOKです。
import pathlib
path = pathlib.Path("~/.config/remind_task/tasks.yml").expanduser()
print("path", path)
## path /Users/atu/.config/remind_task/tasks.yml