首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python读取的数据如何样才能让所有模块共享

2012-05-24 
python读取的数据怎么样才能让所有模块共享想实现以下操作:从配置文件读取数据放入一个字典中,这个字典的

python读取的数据怎么样才能让所有模块共享
想实现以下操作:从配置文件读取数据放入一个字典中,这个字典的数据怎么样才能让其他的模块共享(数据只读取一次)

本来想用全局变量来实现,但是有问题,不知道问题在哪里,请各位指点,代码如下
#test.py

a = {}

def t1():
  globle a
  a["1"] = 1

##################################
#mianTest.py
import test
if __name__ = "__main__":
  test.t1()
  print test.a


################################

#test2.py
import test

print test.a


我的想法是先执行mainTest.py再执行test2.py,但是执行test2.py后,打印的值为空,全局变量为什么没有被修改。

[解决办法]
估计你开2个解释器分别跑脚本,那自然无相关...
[解决办法]
在mianTest.py中首先import了test,那么初始化全局变量a为空,然后执行test.t1()的时候,给a赋值了,因此打印出来的a是有值的。

在test2.py中只import test,初始化全局变量a为空,打印出来的值当然就为空。

你的mainTest和test2的执行之间没有联系,mainTest执行完后,就执行完了,当再执行test2的时候,与你的mainTest是没有关系的,因为它们是两个脚本,所以不管你按什么顺序运行,结果都是一样的。
[解决办法]

Python code
#!python# encoding: utf-8# filename: proj_common.pydef readconfig(configfile):    print 'parser config file', configfile    return dict(path=r'.')proj_setting = readconfig('config.ini')#!python# encoding: utf-8# filename: proj_app1.pyfrom proj_common import *def app1():    print 'Application 1', proj_setting['path']#!python# encoding: utf-8# filename: proj_app2.pyfrom proj_common import *def app2():    print 'Application 2', proj_setting['path']#!python# encoding: utf-8# filename: proj_main.pyfrom proj_common import *from proj_app1 import *from proj_app2 import *app1()app2() 

热点排行