read()函数的返回值是什么类型的?

soc*_*ket 1 python byte

我想从二进制文件中读取前188个字节,并检查第一个字符是否为0x47.代码如下:

import os
fp=open("try.ts","rb")
for i in range(100):
  buf=fp.read(188)
if buf[0]=="\x47":
  print "OK"
fp.close()
Run Code Online (Sandbox Code Playgroud)

但它给出了:

if buf[0]=="\x47":
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. read()功能中返回值的类型是什么?
  2. 如何获取字符串或数组中的第一个字符?

Pav*_*sov 9

if buf[0]=="\x47":
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

这意味着你buf是空的.你在循环中把它覆盖了100次.该文件可能没有18800个字节.在文件的末尾read只返回一个空字符串.你的意思是把你的if内心for?如果是这样,请相应缩进.


Kos*_*Kos 5

  1. read() 函数的返回值是什么类型?

read你指的是 type 的方法file。该命令help(file.read)给出:

read([size])-> 最多读取 size 个字节,以字符串形式返回。

如果大小参数为负数或被省略,则读取直到达到 EOF。请注意,在非阻塞模式下,即使没有给出大小参数,返回的数据也可能少于请求的数据。


  1. 如何获取字符串或数组中的第一个字符?

就像你所做的那样,[0]