在哪里为编译的Python脚本放置配置文件?

时间:2012-03-18 23:53:05

标签: python configuration-files py2exe cx-freeze

这与Where to put a configuration file in Python?类似,但我要问的是在Windows系统上使用py2exe或类似程序编译/冻结的脚本。 (即,这一个:What config file format to use for user-friendly strings of arbitrary bytes? https://gist.github.com/1119561

我的第一个想法是将配置文件放在与.exe相同的文件夹中,这使它有点自包含。但是,如果我将文件与.exe关联,它将从他们的目录调用,而不是它自己的,所以我需要How do I get the path of the current executed file in Python?之类的东西来查找配置文件。

这是最好的方法吗?或者是否有一些标准配置文件位置可供搜索,例如https://stackoverflow.com/a/7567946/125507

3 个答案:

答案 0 :(得分:5)

您可以使用the appdirs module确定用户数据的相应文件夹。

答案 1 :(得分:1)

如果您使用py2exe打包脚本​​,请按照指向如何determine the path of the executable的链接的链接似乎是正确的方法。您决定相对于exe存储配置文件的地方取决于您。您可以将其放在应用程序目录的根目录(exe旁边)或创建config子目录。这是你的选择。

在linux机器上,有时可以使用配置文件的etc/位置。 OSX你要么使用用户plist首选项位置,要么等等。但是在这些平台中你也可以在apps目录中使用相对conf文件。

如果您打包某种类型的GUI框架,那么您可以使用注册表并通过您的界面提供配置选项。

答案 2 :(得分:0)

我在python上创建了“已编译”的可执行文件,其中包含与之关联的文件类型的widnows,并且我在打开与.exe位于同一位置的配置文件时从未遇到任何问题。我用这样的东西找到它:

    conf = open(r"%s\settings.conf" % os.getcwd())

我存储了由换行符分隔的值,因此文件看起来像这样:

PNelson
21
6'

这会存储用户名,年龄和身高,以便读取我会使用的值:

settings = "\n".split(conf.read())

然后检查数组的长度以确保配置文件没有损坏或某种方式,如果是,我会将默认值写入文件并使用它们。