在何处放置已编译Python脚本的配置文件?

在何处放置已编译Python脚本的配置文件?,python,configuration-files,py2exe,cx-freeze,Python,Configuration Files,Py2exe,Cx Freeze,这与类似,但我要问的是在Windows系统上使用py2exe或类似工具编译/冻结的脚本。(即这个:) 我的第一个想法是将配置文件放在与.exe相同的文件夹中,这使它有点自包含。但是如果我将文件与.exe关联,它将从它们的目录调用,而不是从它自己的目录调用,因此我需要一些类似的东西来查找配置文件 这是最好的方式吗?或者,是否有一些标准配置文件位置可供搜索,例如?如果您使用py2exe来打包脚本,请按照描述如何进行的链接进行搜索。您决定将配置文件存储到相对于exe的哪个位置取决于您自己。您可以将其放

这与类似,但我要问的是在Windows系统上使用py2exe或类似工具编译/冻结的脚本。(即这个:)

我的第一个想法是将配置文件放在与.exe相同的文件夹中,这使它有点自包含。但是如果我将文件与.exe关联,它将从它们的目录调用,而不是从它自己的目录调用,因此我需要一些类似的东西来查找配置文件


这是最好的方式吗?或者,是否有一些标准配置文件位置可供搜索,例如?

如果您使用py2exe来打包脚本,请按照描述如何进行的链接进行搜索。您决定将配置文件存储到相对于exe的哪个位置取决于您自己。您可以将其放置在应用程序目录的根目录中(exe旁边),也可以创建一个配置子目录。这是你的选择

在linux机器上,有时使用配置文件的
etc/
位置是很常见的。OSX您可以使用用户plist preferences位置,也可以使用等。但是在这些平台中,您也可以使用apps目录中的相对conf文件

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

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

    conf = open(r"%s\settings.conf" % os.getcwd())
我存储了用换行符分隔的值,因此文件如下所示:

PNelson
21
6'
settings = "\n".split(conf.read())
这将存储用户名、年龄和身高,以读取我将使用的值,如下所示:

PNelson
21
6'
settings = "\n".split(conf.read())

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

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

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

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

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

不,这不起作用
os.getcwd()
返回双击文件所在的目录,而不是脚本所在的目录。我想放置类似内容的标准位置可能是%appdata%目录?