所以我想要我的程序,当打包成.exe并在任何没有安装Python的系统(主要是Windows)上运行时, 写一个隐藏的临时文件 文件系统中的某个位置(最好在系统树中高处,不会有意外删除的风险)作为一种了解它何时首次运行的方式,如图腾。 ......我的意思是" Totem"就像来自Inception的银色dreidel,莱昂纳多迪卡普里奥曾经知道他所处的状态(REM,或Reality);缺乏更好的词/隐喻。
例如,在Windows命令提示符中,您可以使用PATH变量来获取用户主目录位置等内容的默认路径:
start cmd
echo "%USERPROFILE%
...那会返回类似" C:/ Users / Chris"之类的东西,这将是完美的原因我会:
a. Sufficient Read/Write privileges
b. In a directory that won't be removed any time soon.
我发现最接近的是使用:
import sys
sys.path
但是这会返回一个随机路径列表,其中大部分位于Python默认目录中,我不想要这个" Totem"如果写权限不足,树中的值太高,并且提高:
IOError: [Errno 13] Permission denied:
所以我需要一个一致的默认路径,它有足够的权限来读/写文件,而不需要外部库。
答案 0 :(得分:2)
我建议你使用appdirs:pip install appdirs
这将为您提供一组函数,以确定以平台无关的方式使用的正确路径。
appdirs.user_data_dir()
将为您提供用户数据目录appdirs.user_config_dir()
将为您提供用户配置目录appdirs.user_cache_dir()
你明白了所有这些都应该具有足够的权限来写入但具有适当的命名,例如: .YourAppName.totem 您应该会发现它不是随机删除的。前缀用。在大多数系统上都会使文件不可见,但在Windows上你可能还需要主动隐藏文件。