3

这类似于在 Python 中将配置文件放在哪里?,但我询问的是在 Windows 系统上使用 py2exe 或类似工具编译/冻结的脚本。(即这个:什么配置文件格式用于用户友好的任意字节字符串? https://gist.github.com/1119561

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

Is this the best way? Or is there some standard config file locations to search in, like https://stackoverflow.com/a/7567946/125507 ?

4

4 回答 4

5

您可以使用appdirs 模块来确定用户数据的适当文件夹。

于 2012-03-19T09:30:21.193 回答
2

如果这是用户应该编辑的配置文件,请将其放在明显的地方。我倾向于在这样的目录结构中“编译”python 应用程序:

C:/path/to/Application
| config.ini
| Run Application.bat  (runs code/application.exe)
| code/
  | application.exe
  | library.zip 
  | ... etc. 

这将“启动应用程序”快捷方式和配置文件保持在同一位置,便于用户查找。

于 2012-03-19T05:27:04.613 回答
1

如果您使用 py2exe 来打包脚本,那么按照您的链接指向描述如何确定可执行文件路径的链接似乎是正确的方法。您决定将配置文件相对于 exe 存储在哪里取决于您。您可以将它放在应用程序目录的根目录(exe 旁边)或创建一个配置子目录。这是你的选择。

在 linux 机器上,有时通常会使用etc/配置文件的位置。在 OSX 中,您可以使用用户 plist 首选项位置,或者等等。但同样在任何这些平台中,您也可以在应用程序目录中使用相对 conf 文件。

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

于 2012-03-19T02:39:50.600 回答
0

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

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

我存储了由换行符分隔的值,因此文件如下所示:

PNelson
21
6'

这存储了用户名、年龄和身高,以读取我将使用的值,如下所示:

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

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

于 2012-03-19T03:19:10.003 回答