Проблемы с выходом Console2 и Ipython - PullRequest
1 голос
/ 27 февраля 2009

Я использую Ipython для своей командной строки в XP уже давно, о! Тем не менее, будучи любителем приятных глаз, я всегда хотел, чтобы окно консоли было немного прохладнее, например. как окно терминала в Linux.

Сегодня я нашел Консоль2 и мое сердце наполнилось радостью ...

Однако в состоянии большого / многострочного вывода есть что-то тухлое.

Когда я пытаюсь что-то, что может привести к большому многострочному выводу, например команда псевдонимов или просто большой список или dict, я получаю такие вещи ...

[c:/]|12> alias
Total number of aliases: 860
     <12>

Я могу обойти это достаточно легко, например.

[c:/]|19> aliases=_
[c:/]|20> pprint.pprint(aliases)
[('', '.up4vinst'),
 ('a2p', 'a2p'),
 ('accevent32', 'accevent32'),
 ('accevent9x', 'accevent9x'),
 ('accexplorer32', 'AccExplorer32'),
 ('accexplorer9x', 'AccExplorer9x'),
 ('accwiz', 'accwiz'),
 etc...

Но это неудобно. Я не уверен, что ошибка в Console2 или в Ipython, так как я видел эту проблему и с большими списками данных со стандартной оболочкой cmd.

У кого-нибудь есть идеи о том, как это исправить?

Ммм! Таким образом, некоторые дальнейшие исследования показывают, что существует ограничение на размер вывода, который IPython будет обрабатывать ...

Я написал эту очень быструю функцию для генерации списка, содержащего указанное количество символов ...

def big_list( size ):
    my_string = "abcdefghigklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    fricking_big_list=[]
    step_size = len(my_string)
    for x in xrange(step_size, size, step_size):
        fricking_big_list.append(my_string)

    remainder= size - ((size / step_size) * step_size)
    if remainder:
        fricking_big_list.append(my_string[0:remainder])

    return fricking_big_list

Я запустил его из командной строки, вот так ...

[c:/]|206> result = big_list(17909)
[c:/]|207> result
     <207>
[c:/]|208> len(result)
     <208> 345

... и с общим количеством 17909 символов в списке не будет отображаться «результат». Тем не менее, если у меня будет только на один символ меньше ...

[c:/]|209> result = big_list(17908)
[c:/]|210> result
     <210>
['abcdefghigklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
 'abcdefghigklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
.
. [snipped]
.
 'abcdefghigklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
 'abcdefghigklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
 'abcdefghigklmnopqrst']
[c:/]|211>

Тогда Ipython отобразит переменную «result».

...