Martin Blume wrote: > "Steve Holden" schrieb >>>> Try it on a file that reads something like >>>> >>>> xxx = 42 >>>> print xxx >>>> >>>> and you will see NameError raised because the assignment >>>> hasn't affected the environment for the print statement. >>>> >>> [...] >>> >> No, because there isn't one. Now try adding a function >> definition and see how well it works. >> > C:\temp>more question.py > xxx=42 > print xxx > def sowhat(): > print xxx > > print xxx > > > C:\temp>c:\programme\python\python > Python 2.4 (#60, Nov 30 2004, 11:49:19) > [MSC v.1310 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" > for more information. >>>> exec open("question.py").read() > 42 > 42 >>>> sowhat() > 42 >>>> xxx > 42 > > > Seems to work great to me. > > OTOH, this doesn't: >>>> inp=open("question.py") >>>> for l in inp: > ... exec l > ... > 42 > Traceback (most recent call last): > File "<stdin>", line 2, in ? > File "<string>", line 1 > def sowhat(): > ^ > SyntaxError: unexpected EOF while parsing > > > So it seems to depend on the way the file is read. > It depends on the way the lines of the file are executed, not how they are read. And you may remember the original poster was proposing this:
inp = open(cmd_file) > for line in inp: > exec line As for your first example, why not just use execfile() ? regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden ------------------ Asciimercial --------------------- Get on the web: Blog, lens and tag your way to fame!! holdenweb.blogspot.com squidoo.com/pythonology tagged items: del.icio.us/steve.holden/python All these services currently offer free registration! -------------- Thank You for Reading ---------------- -- http://mail.python.org/mailman/listinfo/python-list