在 Python 脚本中存储用户设置
Store user settings in Python script
我创建了一个 Python 包,它实际上是一个命令行界面。一切正常,但我希望能够在某些文件(json、yaml 或其他文件)中存储简单的用户设置(一些值)。处理这些文件本身不是问题,但我不知道我可以将它们存储在哪里。我的程序可以使用 pip install https://github.com/repo
安装并完全离线工作。
似乎 Python 不允许我将设置文件存储在编译程序本身所在的同一文件夹中 (Programs\Python\Python38\Scripts),这是有道理的,但我不知道如何以其他方式做到这一点。
受问题下评论的启发,我多搜索了一下,找到了问题的答案。
我将我的设置文件存储在 C:\users\me\appdata\local\programs\python\python38\lib\site-packages\my_package\config.json
中,可以通过
访问
os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.json')
我还没有在 Linux 或 macOS 上测试过它,但我认为它会起作用。
EDIT:不幸的是,如果没有 sudo,它就无法在 Linux 上运行。为此,我使用了以下内容:
os.path.join(os.path.expanduser("~"), '.my_package_name', 'config.json')
我创建了一个 Python 包,它实际上是一个命令行界面。一切正常,但我希望能够在某些文件(json、yaml 或其他文件)中存储简单的用户设置(一些值)。处理这些文件本身不是问题,但我不知道我可以将它们存储在哪里。我的程序可以使用 pip install https://github.com/repo
安装并完全离线工作。
似乎 Python 不允许我将设置文件存储在编译程序本身所在的同一文件夹中 (Programs\Python\Python38\Scripts),这是有道理的,但我不知道如何以其他方式做到这一点。
受问题下评论的启发,我多搜索了一下,找到了问题的答案。
我将我的设置文件存储在 C:\users\me\appdata\local\programs\python\python38\lib\site-packages\my_package\config.json
中,可以通过
os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.json')
我还没有在 Linux 或 macOS 上测试过它,但我认为它会起作用。
EDIT:不幸的是,如果没有 sudo,它就无法在 Linux 上运行。为此,我使用了以下内容:
os.path.join(os.path.expanduser("~"), '.my_package_name', 'config.json')