Максимум символов, которые можно вставить в raw_input () в Python - PullRequest
2 голосов
/ 12 декабря 2011

Для вызова InterviewStreet мы должны быть в состоянии вместить ввод строки длиной 10 000 символов с клавиатуры, но когда я копирую / вставляю слово длиной 10 Кб в свое локальное тестирование, оно обрезается примерно на тысяче.

Какой официальный лимит в Python? И есть ли способ изменить это?

Спасибо, ребята

Вот задача:

http://www.interviewstreet.com/recruit/challenges/solve/view/4e1491425cf10/4edb8abd7cacd

Ответы [ 3 ]

8 голосов
/ 12 декабря 2011

Вы уверены, что ваше длинное слово 10k не содержит перевода строки?


raw_input ([приглашение]) * +1011 *

Если аргумент подсказки присутствует, он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из ввода, преобразует ее в строку (убирая завершающий перевод строки) и возвращает ее. Когда EOF читается, EOFError повышается.

...

Если был загружен модуль readline , то raw_input () будет использовать его для обеспечения сложных функций редактирования строк и истории.

Не существует максимального ограничения (в python) буфера, возвращаемого raw_input, и, поскольку я протестировал некоторую большую длину ввода для stdin , я не смог воспроизвести ваш результат. Я попытался найти в Интернете информацию об этом, но ничего не смог найти, чтобы помочь мне ответить на ваш вопрос.

мои тесты

  :/tmp% python -c 'print "A"*1000000' | python -c 'print len (raw_input ())';
  1000000
  :/tmp% python -c 'print "A"*210012300' | python -c 'print len (raw_input ())';
  210012300
  :/tmp% python -c 'print "A"*100+"\n"+"B"*100' | python -c 'print len (raw_input ())'; 
  100
0 голосов
/ 20 декабря 2018

У меня был такой же опыт, и я обнаружил, что python ограничивает длину ввода до raw_input, если вы не импортируете модуль readline.После того, как я импортировал модуль readline, он поднял предел (или, по крайней мере, значительно увеличил его, чтобы текст, который я использовал, работал нормально).Это было на моем Mac с Python 2.7.15.

0 голосов
/ 12 декабря 2011

Полагаю, это часть проблем. faq предполагает, что raw_input () не может быть оптимальным подходом:

Наиболее распространенные (возможно, наивные) методы перечислены ниже. (...)

Действительно, есть стандартные модули Python, помогающие обрабатывать ввод / вывод системы.

...