在Python中读取标准输入的一行
从标准输入读取一行的这两种方法:raw_input()
和sys.stdin.readline()
,有什么不同吗?在什么情况下使用其中一种方法会更好呢?
2 个回答
8
不过,从很多Python初学者和教育工作者的角度来看,使用sys.stdin.readline()会遇到以下问题:
相比于“raw_input”这个名字,“sys.stdin.readline()”听起来又笨重又不优雅。
对于大多数初学者来说,“sys”和“stdin”这两个词没有任何意义,他们主要关心的是这个函数的作用,而不是它在包结构中的位置。因为没有意义,记起来也很困难:是“sys.stdin.readline()”,还是“stdin.sys.readline()”?对于编程新手来说,没有明显的理由去偏好其中一个。相比之下,像print、input、raw_input和open这些简单直接的函数名更容易记住。
38
raw_input() 这个函数可以接受一个可选的 prompt
参数。它会把返回的字符串末尾的换行符去掉,而且如果你加载了 readline 模块,它还支持历史记录功能。
readline() 这个函数也可以接受一个可选的 size
参数,但它不会去掉末尾的换行符,而且完全不支持历史记录。
因为这两个函数的功能不一样,所以不能互换使用。我个人更喜欢用 raw_input()
来获取用户输入,而用 readline()
来从文件中读取行。