How to exec() a string like interactive python does?

News123 news1234 at free.fr
Wed Jun 6 04:34:52 EDT 2012


On 06/06/2012 12:12 AM, News123 wrote:
> If I start Python in interactive mode,
> and I yype the commands,
> 'a=3', 'a', 'print a'
>
>
> Then the output would look like:
>  >>> a = 3
>  >>> a
> 3
>  >>> print a
> 3
>
>
> Now within an application I'd like to achieve exactly this behaviour
> Meaning, that
> - for assignments nothing is displayed
> - for expressions the result of the exprission displayed
> - and statements like print statements would be executed
>
>
> The only thing, that I came up with is following code and that would
> even print out results for 'a=3', where the normal interactive python
> would not echo any result.
>
> for cmd in [ 'a=3', 'a', 'print a' ] :
> try:
> print('>>> ' + cmd)
> exec('__rslt = ' + cmd)
> if __rslt is not None:
> print repr(__rslt)
> except SyntaxError:
> exec(cmd)
>
> The result would look like:
>  >>> a=3
> 3
>  >>> a
> 3
>  >>> print a
> 3
>  >>>
>
>
> Is There anything better?
>

Thanks a lot Devin,
Following line does the trick:

eval(compile(s, '<string>', 'single'))





More information about the Python-list mailing list