我正在使用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保持为空。 有什么建议请改进这段代码吗?
答案 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"