配置Python脚本它知道它的文件名

我想通过编写带有可变分配和功能,这我将用ConfigReader类稍后导入一些Python代码来保存复杂的配置。

基本上,到目前为止,我已经写了我的配置文件:

a=1

这就像一个类

c=ConfigReader("C:\my_file") print(ca)

对于我使用EXEC(),但现在我也希望该配置文件知道自己的文件名(由于目录中的一些变量提供信息)

所以我需要一个像一个配置文件:

a=parse_project_number_from_dir(__file__)

看来我需要在Python 3来代替EXEC()被一些小鬼模块加载? 是执行一个简单的文件最简单的方法使它意识到它的路径呢?

而且我想我ConfigReader类读取所有的变量转换成字典。 (与exec我只是看着当地人())。 我现在应该怎么做,我不能导入配置文件(如parse_project_number_from_dir功能)辅助进口,但刚才我实际上定义存在(即=)?

--------------解决方案-------------

当你exec Python脚本,也没有文件名 ​​,因为你给exec字符串或编译的对象。 该exec命令没有办法知道你在哪里得到这个字符串。

但是,与大家分享您传递给config文件中的知识的一种方式exec 。 例如...

比方说,你有一个配置文件,上面写着

print myname

然后运行下面的Python脚本:

ns = {}
ns["myname"] = "sample.cfg"
s = open("sample.cfg","r")
exec s in ns # in 3.x use exec(s,ns) instead

这将创建一个新的命名空间,并在该命名空间创建一个变量名为myname 。 因为脚本知道它是即将打开的文件的名称,也可以分配给变量。 效果是相同的exec 'myname = "sample.cfg"' in ns

然后,当你执行的是配置文件,你告诉它使用的共享脚本的知识ns命名空间。 如果这似乎有点混乱,大概做一点点读globalslocals和命名空间。

import sys
sys.path.insert(0,"path to your file")
from yourFile import *

分类:蟒蛇 时间:2015-03-15 人气:0
本文关键词: 蟒蛇
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.278 (s). 10 q(s)