<div class="gmail_quote">On 2 February 2012 16:12, Daniel Griffith <span dir="ltr">&lt;<a href="mailto:daniel.dang.griffith@gmail.com">daniel.dang.griffith@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div id=":11a">I ran &quot;a = !ls&quot; and tried to &quot;print(a.nlstr)&quot; to see the results, and it complained about having bytes instead of strings: <br>
&quot;TypeError: sequence item 0: expected str instance, bytes found&quot;.<br><br>The earlier stage would be in the &quot;!&quot; handler; I haven&#39;t looked at that code. I assume there are reasons it is putting <br>

bytes into the SList instead of strings. Maybe it should change instead? I don&#39;t know. I suppose that would depend <br>
on whether other code will assume that SList contains only strings and whether &quot;!&quot; is returning bytes.</div></blockquote></div><br>That&#39;s the stage I&#39;d look at - the code starts with the getoutput method here:<br>

<a href="https://github.com/ipython/ipython/blob/master/IPython/core/interactiveshell.py#L2093">https://github.com/ipython/ipython/blob/master/IPython/core/interactiveshell.py#L2093</a><br><br>The trouble with just calling str is that it doesn&#39;t always do what you might expect, so if we&#39;ve got bytes, it&#39;s better to decode them:<br>

<br>&gt;&gt;&gt; str(b&#39;abc&#39;)<br>&quot;b&#39;abc&#39;&quot;<br>&gt;&gt;&gt; b&#39;abc&#39;.decode()  # ...but we need to work out the encoding<br>&#39;abc&#39;<br><br>Thomas<br>