Python 3.2.2 ЧИТАТЬ с консоли - PullRequest
       1

Python 3.2.2 ЧИТАТЬ с консоли

2 голосов
/ 07 ноября 2011

Я работаю на Python 3.2.2. У пользователя есть возможность ввести значение на консоли или позволить использовать значение по умолчанию, если он просто нажмет ENTER. например Если пользователь нажимает клавишу ВВОД, значение устанавливается в c: \ temp, как показано в фрагменте кода ниже:

READ=os.read(0,100)
if READ == "\n" :
  READ="c:\\temp"

Этот код работал в Python 2.7, но он не работает в Python 3.2.2.

В 3.2.2 READ остается пустым. Любые предложения, пожалуйста, чтобы улучшить этот код?

Ответы [ 2 ]

7 голосов
/ 07 ноября 2011

Функция os.read возвращает class str в Python 2.7, но class bytes в Python 3.2. Таким образом, в Python 3.2 if READ == "\n": READ="C:\\temp" будет никогда не будет True. Вы можете изменить это так:

if str(READ,"ascii") == os.linesep: READ = "C:\\temp"

Может быть, точнее:

import os,sys
READ = os.read(0,100)
if str(READ,sys.stdin.encoding) == os.linesep:
   READ = "C:\\temp"
1 голос
/ 07 ноября 2011

Python 3 внес изменения в обработку строк , поэтому os.read() возвращает двоичную строку.

Код должен быть зафиксирован с

if READ == b'\n' :
  READ="c:\\temp"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...