using execfile() in class/instance methods
Alex Martelli
aleaxit at yahoo.com
Sat Dec 9 08:09:29 EST 2000
"Wayne Cuddy" <wcuddy at lserv.ja10629.home> wrote in message
news:slrn932qna.rtk.wcuddy at lserv.ja10629.home...
> I am attempting to use the execfile() function to "source" a file that
> has valid python code to create a diction object:
>
> bn { 'key' : 'value1',
> 'key2' : 'value2' }
This is not valid Python code -- it's probably missing an equal-sign
between the identified bn and the open-brace.
> I am issueing this command from a class constructor method and would
> like bn to be bound the class instance. So in the future I can say:
> print self.bn['key']
Piece of cake.
-- file: ba.txt
bn = { 'key' : 'value1',
'key2' : 'value2' }
-- end of file: ba.txt
-- file: ba.py
class Ba:
execfile('ba.txt')
def bu(self):
print self.bn['key']
ba = Ba()
ba.bu()
-- end of file: ba.py
D:\PySym>python ba.py
value1
D:\PySym>
> Is this possible? I assume I am screwing up the global() and locals()
> arguments to the function which I can say that I don't fully
I think it was probably just the missing '=' sign, as above. The default
for globals and locals seem to be OK in this case.
> understand. Also is there another better/worse way to do this???just
> so I can see what else is out there..
execfile is very risky if the textfile you're executing may contain
undesired
stuff, of course; then, you might want to build up the self.bn dictionary
in a safer manner, which might then be highly preferable.
But if the textfile is fully under your control, this might be quite OK.
Alex
More information about the Python-list
mailing list