Necmettin Begiter wrote:
> I want to run an external python script inside my script. So here is what I 
> came up with:
>
> Print codename for testing purposes.
> Define an empty dictionary.
> Read the file.
> Do StringIO assignments and run the code.
> Get the outputs and append them to the dictionary.
> Print the outputs for testing purposes.
>
>
> The code:
> codeOut= {}
> codeErr= {}
>
> Print codename for testing purposes:
>       print codename
> Note: codename is a parameter that is passed to the function for the first 
> parts (keys) of codeOut and codeErr dictionaries; and it prints the given 
> name (deneme in this case) correctly.
>
> Read the file:
>       localfile= open(filename,'r')
>       code2run= localfile.readlines()
>       localfile.close()
>
> Do StringIO assignments and run the code:
>       codOut= StringIO.StringIO()
>       codErr= StringIO.StringIO()
>       sys.stdout= codOut
>       sys.stderr= codErr
>       exec code2run
>       sys.stdout= sys.__stdout__
>       sys.stderr= sys.__stderr__
>
> Get the outputs and append them to the dictionary.
>       erroroutput= codErr.getvalue()
>       normaloutput= codOut.getvalue()
>       codeOut.append({codename:erroroutput})
>   
I'm confused when you "assign" errorputput to codeOut and normaloutput 
to codeErr.

Also unclear why you use dictionaries in the first place.

When I run this program from a command prompt I get:
 
File "begiter.py", line 21, in <module>
    codeOut.append({codename:erroroutput})
AttributeError: 'dict' object has no attribute 'append'

However when I run it from my IDE (PythonWin) the traceback does not 
show. In fact sys.stdout= sys.__stdout__  does not restore the print to 
the interactive window.

So there are 2 problems. Fix the first by either
codeOut.update({codename:erroroutput})
or (preferred):
codeOut[codename]=normaloutput

>       codeErr.append({codename:normaloutput})
>
> Print the outputs (just for testing):
>       print codename
>       print normaloutput
>       print erroroutput
>       print codeOut
>       print codeErr
>
> And I get nothing. 
> Is there something I am doing wrong? Because I have read 
> the parts on dictionaries and stringio and googled, but I can't find the 
> problem. Any comments, suggestions? Or could someone please tell me if there 
> is something wrong with my code?
>
>   


-- 
Bob Gailer
510-978-4454

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to