从Python中的标准输入读取一行

Gri*_*yan 26 python language-features input

什么(如果有的话)是从标准输入读取一行的以下两种方法之间的差异:raw_input()sys.stdin.readline()?在哪种情况下,这些方法中的一种优于另一种?

Fré*_*idi 36

raw_input()接受一个可选prompt参数.它还从它返回的字符串中删除尾部换行符,并在加载readline模块时支持历史记录功能.

readline()接受一个可选size参数,不会删除尾部换行符,也不支持历史记录.

由于他们没有做同样的事情,他们不是真的可以互换.我个人更喜欢raw_input()用来获取用户输入,以及readline()从文件中读取行.

  • 此外,`sys.stdin.readline()`可用于读取通过管道传递给程序的数据,如`program | my_app.py`(这是我实际上唯一使用`sys.stdin`的东西),这不能用`raw_input()`来完成.对我来说,`sys.stdin`用于读取从管道传递的数据,`raw_input()`用于在程序执行期间提示数据. (12认同)
  • 这对我来说似乎不对.在Python 2.7中,`raw_input()`读取管道中的第一行,但不是所有这些行. (2认同)

Mar*_*riy 9

"但是,从许多Python初学者和教育工作者的角度来看,使用sys.stdin.readline()会出现以下问题:

  1. 与名称"raw_input"相比,名称"sys.stdin.readline()"是笨重且不优雅的.

  2. 名称"sys"和"stdin"对大多数初学者没有意义,他们主要对函数的作用感兴趣,而不是它所在的包结构中的位置.缺乏意义也使人难以记住:是"sys.stdin.readline()"还是"stdin.sys.readline()"?对于编程新手来说,没有任何明显的理由偏爱另一个.相比之下,函数简单和直接的名称,如print,input,raw_input和open更容易记住."从这里:http://www.python.org/dev/peps/pep-3111/