.read()是否返回一个流?

时间:2015-02-08 19:05:27

标签: python stream

python中.read()操作的类型返回的技术术语是什么?

例如:

x = open('myfile', 'r').read()
x = stdin.read()

提到的x是什么?它是字节流吗?我想创建一个期望x作为输入的函数,并且不知道如何在我的docstring中解释它? IE

def parser(stream, ...):
   """ First argument is ??? type, returned from .read() operations."""

我已经尝试过谷歌搜索,但大多数结果太过于夸张。

由于

2 个答案:

答案 0 :(得分:1)

它是unicode字符串或字节字符串,具体取决于您打开文件的模式和Python版本。

  • Python 2:始终返回字节字符串(类型str
  • Python 3:返回Unicode字符串(类型str),除非"b"处于模式中,在这种情况下它返回类型bytes

答案 1 :(得分:0)

来自https://docs.python.org/2/library/stdtypes.html#bltin-file-objects

  

file.read([大小])

     

从文件中读取最多大小字节(如果读取在获取大小字节之前达到EOF,则更少)。如果size参数为负数或省略,则读取所有数据,直到达到EOF。字节作为字符串对象返回。立即遇到EOF时返回空字符串。 (对于某些文件,如ttys,在EOF被命中后继续读取是有意义的。)注意,此方法可能多次调用底层C函数fread(),以尽可能接近大小字节。另请注意,在非阻塞模式下,即使没有给出大小参数,也可能返回的数据少于请求的数据。

对于

来说太过于夸张
  

字节作为字符串对象返回。

它是一个字符串,包含所有文件的内容。

编辑:Adam,Python通常不是严格键入的。对类似字符串的对象起作用的任何东西通常都会带有像字符串一样的方法/属性。