2012-03-18 36 views
3

这与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在哪里放置一个编译的Python脚本的配置文件?

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

这是最好的方法吗?还是有一些标准的配置文件位置进行搜索,如https://stackoverflow.com/a/7567946/125507

回答

1

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

在Linux机器上,使用配置文件的etc/位置有时可能很常见。 OSX你可以使用用户plist首选项位置,或者等等。但是在任何这些平台中,你也可以在apps目录中使用相对的conf文件。

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

0

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

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

我储存在我由一个换行符分隔值,因此该文件是这样的:

PNelson 
21 
6' 

它保存了一个用户名,年龄和身高,读值我会用这样的:

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

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

+0

不,这是行不通的。 'os.getcwd()'返回双击文件所在的目录,而不是脚本所在的目录。 – endolith 2012-03-19 04:01:13

+2

我猜这样的标准放置位置可能在%appdata%目录中? – 2012-03-19 05:29:47

2

如果这是一个用户应该编辑的配置文件,然后将它放在明显的地方。我倾向于在这样的目录结构“编译” Python应用程序:

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

这使“启动应用程序”快捷方式,并在同一个地方的配置文件,方便用户查找。