定番ディレクトリしたい(platformdirs)
1import platformdirs
2platformdirs.user_data_dir("パッケージ名")
3platformdirs.user_cache_dir("パッケージ名")
4platformdirs.user_log_dir("パッケージ名", ensure_exists=True)
各種データを保存するディレクトリ名はOSによって異なります。
platformdirsを使うと定番パスを取得できます。
また、ensure_existsオプションを使うと、パスが存在しない場合に作成できます。
以下はmacOSで確認しました。
注釈
_dirで終わる関数(user_data_dirなど)は文字列(str)を返し、
_pathで終わる関数(user_data_pathなど)はpathlib.Pathオブジェクトを返します。
pathlibで後続の処理をしたい場合は_path系を使うと便利です。
ユーザーデータしたい(user_data_dir)
1platformdirs.user_data_dir("パッケージ名")
2# '~/Library/Application Support/パッケージ名'
3
4platformdirs.user_data_path("パッケージ名")
5# PosixPath('~/Library/Application Support/パッケージ名')
注釈
Windowsでは、第二引数appauthorで発行元(会社名など)を指定できます
(platformdirs.user_data_dir("パッケージ名", "発行元"))。
macOS/Linuxではパスに反映されませんが、Windowsではパスの一部として使われます。
キャッシュデータしたい(user_cache_dir)
1platformdirs.user_cache_dir("パッケージ名")
2# '~/Library/Caches/パッケージ名'
3
4platformdirs.user_cache_path("パッケージ名")
5# PosixPath('~/Library/Caches/パッケージ名')
設定ファイルしたい(user_config_dir)
1platformdirs.user_config_dir("パッケージ名")
2# '~/Library/Application Support/パッケージ名'
3
4platformdirs.user_config_path("パッケージ名")
5# PosixPath('~/Library/Application Support/パッケージ名')
アプリケーションの設定ファイルを保存する場所です。
macOSではuser_data_dirと同じパスになりますが、
LinuxやWindowsでは異なるパスになります。
ログしたい(user_log_dir)
1platformdirs.user_log_dir("パッケージ名")
2# '~/Library/Logs/パッケージ名'
3
4platformdirs.user_log_path("パッケージ名")
5# PosixPath('~/Library/Logs/パッケージ名')
アプリケーションのログは、カレントディレクトリではなく、 ユーザーやシステムが探しやすい適切な場所に保存するのがよいとされています。