Python 3.2.2 从控制台读取
我正在使用Python 3.2.2。用户可以选择在控制台输入一个值,或者如果直接按回车键,就使用默认值。例如,如果用户按下回车键,值就会设置为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 个回答
1
Python 3 对字符串的处理方式做了一些调整,具体可以查看这篇文档。因此,使用 os.read()
时,它返回的是二进制字符串。
代码需要进行以下修改:
if READ == b'\n' :
READ="c:\\temp"
7
在Python 2.7中,os.read
这个函数会返回一种叫做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"