Python "Totem" 位置(平台独立路径)

Python "Totem" Locations (Platform independent Paths)

所以我希望我的程序在没有安装 Python 的任何系统(主要是 Windows)上打包成 .exe 和 运行 后,到 在文件系统的某个地方写一个隐藏的临时文件(最好在系统树的高处,不会有意外删除的风险)作为一种知道什么时候它是第一个 运行,就像一个图腾。 ……我所说的 "Totem" 就像《盗梦空间》中的银色陀螺,莱昂纳多·迪卡普里奥曾经知道自己处于什么状态(REM,或现实);因为没有更好的 word/metaphor.

例如在 Windows 命令提示符中,您可以使用 PATH 变量获取用户家庭位置等内容的默认路径:

start cmd
echo "%USERPROFILE%

... 那会 return 类似于 "C:/Users/Chris",那将是完美的,因为我会:

a. Sufficient Read/Write privileges
b. In a directory that won't be removed any time soon.

我发现最接近的是使用:

import sys
sys.path

但这会 return 一个 运行dom 路径列表,其中大部分位于 Python 默认目录中,我不想要这个 "Totem"在写入权限不足的情况下在树中太高,并提高:

IOError: [Errno 13] Permission denied:

所以我需要一个一致的默认路径,该路径将对 reading/writing 文件具有足够的权限,而不需要外部库。

我建议你使用appdirs: pip install appdirs

这将为您提供一组函数来确定以与平台无关的方式使用的正确路径。

  • appdirs.user_data_dir()会给你用户数据目录
  • appdirs.user_config_dir()会给你用户配置目录
  • appdirs.user_cache_dir()你明白了

所有这些你都应该有足够的权限写入,但要有适当的命名,例如.YourAppName.totem你应该会发现不是随便删的。前缀为 .在大多数系统上会使文件不可见,但在 windows 上您可能还需要主动隐藏文件。