Чтение строки из стандартного ввода в Python - PullRequest
27 голосов
/ 06 августа 2011

В чем (если таковые имеются) различия между следующими двумя методами чтения строки из стандартного ввода: raw_input() и sys.stdin.readline()? И в каких случаях один из этих методов предпочтительнее другого?

Ответы [ 2 ]

36 голосов
/ 06 августа 2011

raw_input () принимает необязательный аргумент prompt.Он также удаляет завершающий символ новой строки из возвращаемой строки и поддерживает функции истории, если загружен модуль readline .

readline () принимает необязательный size аргумент, не удаляет завершающий символ новой строки и не поддерживает историю вообще.

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

9 голосов
/ 06 августа 2011

"Однако, с точки зрения многих начинающих и преподавателей Python, использование sys.stdin.readline () создает следующие проблемы:

  1. По сравнению с именем «raw_input» имя «sys.stdin.readline ()» неуклюжее и не элегантное.

  2. Имена "sys" и "stdin" не имеют значения для большинства новичков, которые в основном заинтересованы в том, что делает функция, а не в том, где в структуре пакета она расположена. Отсутствие смысла также затрудняет запоминание: это "sys.stdin.readline ()" или "stdin.sys.readline ()"? Для новичка в программировании нет никаких очевидных причин предпочитать одно другому. Напротив, функции простых и прямых имен, таких как print, input, raw_input и open, легче запомнить. »Отсюда: http://www.python.org/dev/peps/pep-3111/

...