我想要一个代码片段,在所有平台(至少是Win/Mac/Linux)上获取适当的app数据目录(配置文件等).例如:Windows上的%APPDATA%/.
Jas*_*n S 11
如果您不介意使用appdirs模块,它应该可以解决您的问题.(cost =您需要安装模块或将其直接包含在Python应用程序中.)
Qt 的QStandardPaths 文档列出了这样的路径。
使用 Python 3.8
import sys
import pathlib
def get_datadir() -> pathlib.Path:
"""
Returns a parent directory path
where persistent application data can be stored.
# linux: ~/.local/share
# macOS: ~/Library/Application Support
# windows: C:/Users/<USER>/AppData/Roaming
"""
home = pathlib.Path.home()
if sys.platform == "win32":
return home / "AppData/Roaming"
elif sys.platform == "linux":
return home / ".local/share"
elif sys.platform == "darwin":
return home / "Library/Application Support"
# create your program's directory
my_datadir = get_datadir() / "program-name"
try:
my_datadir.mkdir(parents=True)
except FileExistsError:
pass
Run Code Online (Sandbox Code Playgroud)
在Python文档建议sys.platform.startswith('linux')与旧版本的Python传回了像“linux2上”或“linux3”兼容性“成语”。
小智 1
我建议研究“appdata”在您想要使用该程序的操作系统中的位置。一旦您知道了位置,您就可以简单地使用 if 语句来检测操作系统和 do_something()。
import sys
if sys.platform == "platform_value":
do_something()
elif sys.platform == "platform_value":
do_something()
Run Code Online (Sandbox Code Playgroud)
列表来自官方 Python 文档。(搜索“sys.platform”)