Обновление: Один из способов, который мне приходит в голову, это явно установить режим stdin
в двоичный. Таким образом, что-то вроде следующего будет читать CRLF как два символа:
import msvcrt, os, sys
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
while True:
ch = sys.stdin.read(1)
print ord(ch) # CRLF should appear as 13 followed by 10
Другой способ - запустить python с флагом -u
, что приведет к небуферизованному stdin
(а также stdout
и stderr
). Так что просто python -u myscript.py
, где myscript.py вызывает stdin.read(1)
без других изменений. См. python --help
для получения дополнительной информации об этом.
Старый: Если вы работаете в Windows, Python должен иметь возможность обрабатывать это без какого-либо вмешательства, когда вы вызываете sys.stdin.readline
(или просто перебираете sys.stdin
, который представляет собой объект, подобный файлу). Вы используете sys.stdin.read
вместо этого? Если это так, вам нужно разобраться с этим делом самостоятельно.