Python 3.2.2从控制台读取

时间:2011-11-07 12:01:02

标签: python console python-3.x

我正在使用Python 3.2.2。用户可以选择在控制台上输入值,或者如果他只是按ENTER键则使用默认值。例如如果用户点击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 个答案:

答案 0 :(得分:7)

函数os.read在python 2.7中返回class str,但在python 3.2中返回class bytes。所以在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 :(得分:1)

Python 3发出changes in string handling,因此os.read()返回二进制字符串。

代码应该用

修复
if READ == b'\n' :
  READ="c:\\temp"