Newbie: splitting dictionary definition across two .py files
Ben Cartwright
bencvt at gmail.com
Thu Mar 30 20:29:38 EST 2006
kar1107 at gmail.com wrote:
> I like to define a big dictionary in two
> files and use it my main file, build.py
>
> I want the definition to go into build_cfg.py and build_cfg_static.py.
>
> build_cfg_static.py:
> target_db = {}
> target_db['foo'] = 'bar'
>
> build_cfg.py
> target_db['xyz'] = 'abc'
>
> In build.py, I like to do
> from build_cfg_static import *
> from build_cfg import *
>
> ...now use target_db to access all elements. The problem looks like, I
> can't
> have the definition of target_db split across two files. I think they
> reside in different name spaces?
Yes. As it stands, build_cfg.py will not compile to bytecode
(NameError: name 'target_db' is not defined).
Unless you're doing something ugly like exec() on the its contents, .py
files need to be valid before they can be imported.
> Is there any way I can have the same
> dictionary definition split across two files?
Try this:
# build_cfg_static.py:
target_db = {}
target_db['foo'] = 'bar'
# build_cfg.py:
target_db = {}
target_db['xyz'] = 'abc'
# build.py:
from build_cfg_static import target_db
from build_cfg import target_db as merge_db
target_db.update(merge_db)
--Ben
More information about the Python-list
mailing list