<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><head><META content="text/html; charset=utf-8" http-equiv="Content-Type">

<STYLE><!-- /* Style Definitions */ p.203d63a9-be16-4640-9f12-8b51f13669b1, li.203d63a9-be16-4640-9f12-8b51f13669b1, div.203d63a9-be16-4640-9f12-8b51f13669b1, table.203d63a9-be16-4640-9f12-8b51f13669b1Table        {margin:0cm; margin-bottom:.0001pt;}div.Section1 {page:Section1;}--></STYLE>

<META content="text/html; charset=utf-8" HTTP-EQUIV="Content-Type">
<META CONTENT="MS Exchange Server version 6.5.7654.12" NAME="Generator">
<TITLE>Exec function problem</TITLE>
</head><BODY>
<P CLASS="203d63a9-be16-4640-9f12-8b51f13669b1">
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Using Python 2.5.</FONT></SPAN><SPAN LANG="en-gb"> </SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">DemandModel.py is a valid, working python script. If I create another script file, then:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">execfile</FONT></SPAN><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">(</FONT></SPAN><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">&#8216;</FONT></SPAN><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">DemandModel.py</FONT></SPAN><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">&#8217;</FONT></SPAN><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">)</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">w</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">orks fine.</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri"> However, the apparently similar:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">def runfile():</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#00B0F0" FACE="Calibri">execfile('DemandModel.py')</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">runfile()</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">doesn</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">&#8217;</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">t, for no apparent reason: I get </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#FF0000" FACE="Calibri">&nbsp; File &quot;DemandModel.py&quot;, line 12, in DemandModel</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#FF0000" FACE="Calibri">&nbsp;&nbsp;&nbsp; Parameters=ReadDmData(segname)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#FF0000" FACE="Calibri">NameError: global name 'ReadDmData' is not defined</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Any ideas why?</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-gb"> </SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Use of </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">CodeFile=open('DemandModel.py', 'r')</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT COLOR="#00B0F0" FACE="Calibri">exec(CodeFile)</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">instead of execfile, doesn</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">&#8217;</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">t make any difference either way</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">, nor does it make any difference if I read the file using read() and then execute the string- in all cases the top-level command works; placed in a function it doesn</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">&#8217;</FONT></SPAN><SPAN LANG="en-gb"><FONT FACE="Calibri">t.</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT FACE="Calibri">Regards and thanks,</FONT></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><B></B></SPAN><SPAN LANG="en-gb"><B></B></SPAN><B><SPAN LANG="en-us"></SPAN></B><B><SPAN LANG="en-us"><FONT COLOR="#1F497D" FACE="Arial" SIZE=2>Andrew Currall</FONT></SPAN></B><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT COLOR="#1F497D" FACE="Arial" SIZE=2> MPhys<BR>
Senior Consultant, Transportation<BR>
D +44 (0)1727 535612<BR>
</FONT></SPAN><SPAN LANG="en-gb"></SPAN><A HREF="mailto:andrew.currall@aecom.com"><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><U></U></SPAN><U><SPAN LANG="en-us"></SPAN></U><U><SPAN LANG="en-us"><FONT COLOR="#0000FF" FACE="Arial" SIZE=2>andrew.currall@aecom.com</FONT></SPAN></U><SPAN LANG="en-gb"></SPAN></A><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><B></B></SPAN><SPAN LANG="en-gb"><B></B></SPAN><B><SPAN LANG="en-us"></SPAN></B><B><SPAN LANG="en-us"><FONT COLOR="#1F497D" FACE="Arial" SIZE=2>AECOM</FONT></SPAN></B><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-us"><BR>
</SPAN><SPAN LANG="en-us"><FONT COLOR="#1F497D" FACE="Arial" SIZE=2>AECOM House<BR>
63-77 Victoria Stre</FONT><FONT COLOR="#1F497D" FACE="Arial" SIZE=2>et<BR>
St Albans, Herts AL1 3ER<BR>
T +44 (0)1727 535000 F +44 (0)1727 535099<BR>
</FONT></SPAN><SPAN LANG="en-gb"></SPAN><A HREF="http://www.aecom.com/"><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><U></U></SPAN><U><SPAN LANG="en-us"></SPAN></U><U><SPAN LANG="en-us"><FONT COLOR="#0000FF" FACE="Arial" SIZE=2>www.aecom.com</FONT></SPAN></U><SPAN LANG="en-gb"></SPAN></A><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"></SPAN></P>

</P>
<P CLASS="203d63a9-be16-4640-9f12-8b51f13669b1">
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"></SPAN></P>&nbsp;
<P></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">This email is confidential and is for the intended recipient only.&nbsp; If you are not the intended recipient, please contact the author and you must not disclose or use the contents in any way.&nbsp; The author bears responsibility for any legal action or disputes arising from views or professional advice expressed which do not relate to the business of AECOM&nbsp;Ltd.</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">&nbsp;</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">AECOM Limited Registered in England No: 1846493</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">Registered Office: AECOM House, 63-77 Victoria Street, St Albans, Herts, AL1 3ER</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">&nbsp;</SPAN></P>
<P CLASS="MsoNormal" STYLE="MARGIN: 0cm 0cm 0pt"><SPAN STYLE="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt">Please consider the environment before printing this e-mail</SPAN></P>
<P CLASS="203d63a9-be16-4640-9f12-8b51f13669b1">&nbsp;</P></P></BODY></HTML>