[IPython-User] Pretty print as default print function

Carl Smith carl.input@gmail....
Sat Nov 10 02:39:16 CST 2012


Just to be clear, you'd then do `sys.stdout = StandardOut()` and be
careful not to recur by writing out within the write method. Again,
I'm not sure this makes sense, but surely you want to modify stdout on
it's way to the notebook, not overload print.

On 10 November 2012 08:34, Carl Smith <carl.input@gmail.com> wrote:
> Can you not redirect stdout to a method with something like...
>
> class StandardOut(object):
>
>     def __init__(self): pass
>
>     def write(self, string):
>         do_stuff()
>
> I'm not sure if that'll work. Just thinking out loud really.
>
> On 10 November 2012 08:17, Thomas Kluyver <takowl@gmail.com> wrote:
>> The only thing I can think of is to hack an ast transformation into %run, to
>> turn print statements into calls to a function you've defined.
>>
>> The good news is that a lot of scientific python packages now support python
>> 3.
>>
>> Thanks,
>> Thomas
>>
>> On Nov 10, 2012 1:10 AM, "Gökhan Sever" <gokhansever@gmail.com> wrote:
>>>
>>> Thanks for the reply Thomas.
>>>
>>> I still use Python 2.7, along with all of the scientific Python stack.
>>>
>>> Do you think is there a simple way to modify IPython's "run" command so
>>> that output's pretty printed just like IPython shell?
>>>
>>>
>>> On Fri, Nov 9, 2012 at 2:28 AM, Thomas Kluyver <takowl@gmail.com> wrote:
>>>>
>>>> In python 3, you can replace the builtin print function. I don't know of
>>>> any way to modify the behaviour of print statements in python 2.
>>>>
>>>> Thomas
>>>>
>>>> On Nov 9, 2012 6:59 AM, "Gökhan Sever" <gokhansever@gmail.com> wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> I would like to be able print NumPy arrays matching the IDL's array
>>>>> print outout. For instance:
>>>>>
>>>>> IDL> print, findgen(5)
>>>>>       0.00000      1.00000      2.00000      3.00000      4.00000
>>>>> IDL> print, dindgen(5)
>>>>>        0.0000000       1.0000000       2.0000000       3.0000000
>>>>> 4.0000000
>>>>>        0.0000000       1.0000000       2.0000000       3.0000000
>>>>> 4.0000000
>>>>>
>>>>>
>>>>> I1 np.arange(5, dtype='float64')
>>>>> O1        0.0000000       1.0000000       2.0000000       3.0000000
>>>>> 4.0000000
>>>>>
>>>>> I2 np.arange(5, dtype='float32')
>>>>> O2       0.00000      1.00000      2.00000      3.00000      4.00000
>>>>>
>>>>> Ignoring O1 and O2 lines, outputs (formatting) are matching. I achieved
>>>>> this by defining some custom pprint formatters in the IPy config file.
>>>>>
>>>>> However, this is only valid within IPython while just typing array
>>>>> names. For instance, running these lines revert the printing settings back
>>>>> to normal.
>>>>>
>>>>> Is there a way to make this type of customized printing default for
>>>>> executing a file via Python? ie., can we replace python's print statement
>>>>> with pprint?
>>>>>
>>>>> If not, should I edit numpy/core/arrayprint.py and use a pythonrc file
>>>>> to achieve the effect?
>>>>>
>>>>> I am also interested in custom printing other data types than nd.arrays.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> --
>>>>> Gökhan
>>>>>
>>>>> _______________________________________________
>>>>> IPython-User mailing list
>>>>> IPython-User@scipy.org
>>>>> http://mail.scipy.org/mailman/listinfo/ipython-user
>>>>>
>>>>
>>>> _______________________________________________
>>>> IPython-User mailing list
>>>> IPython-User@scipy.org
>>>> http://mail.scipy.org/mailman/listinfo/ipython-user
>>>>
>>>
>>>
>>>
>>> --
>>> Gökhan
>>>
>>> _______________________________________________
>>> IPython-User mailing list
>>> IPython-User@scipy.org
>>> http://mail.scipy.org/mailman/listinfo/ipython-user
>>>
>>
>> _______________________________________________
>> IPython-User mailing list
>> IPython-User@scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-user
>>


More information about the IPython-User mailing list