2013-04-16 48 views
0

我在这里写了一个python程序。我想读取一个二进制文件,先读取188个字节,然后检查第一个字符是否为0x47。下面的代码:python中read()函数的返回值是什么类型?

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

但它出错如下:

if buf[0]=="\x47" 
       ^
SyntaxError: invalid syntax 

我想问问是:

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

谢谢你,我很想念结肠。但是当我添加它时,它表明:

if buf[0]=="\x47": 
IndexError: string index out of range 

仍然错误?

回答

6
  1. str
  2. 你忘了冒号:

    if buf[0] == "\x47":


if buf[0]=="\x47": 
IndexError: string index out of range 

这意味着您的buf是空的。你在循环中重写了100次。该文件可能没有18800字节。在文件末尾read只是返回一个空字符串。你的意思是把if放在for里面吗?如果是,请相应缩进。

+0

是的,但是当我添加冒号时,它显示:if buf [0] ==“\ x47”: IndexError:字符串索引超出范围 – socket

+0

编辑我的答案。 –

+0

是的!!非常感谢!!就是这样~~ :-) – socket

3
  1. What's the type of a return value in read() function?

您的意思是file类型的方法read。该命令help(file.read)给出:

read([size]) -> read at most size bytes, returned as a string.

If the size argument is negative or omitted, read until EOF is reached. Notice that when in non-blocking mode, less data than what was requested may be returned, even if no size parameter was given.


  1. How can I get the first character in a string or array?

就像你一样,[0]。语法错误是因为您在条件后缺少冒号:

+0

谢谢,我尝试了帮助命令,它太酷了〜但是关注第二个问题,我添加冒号,它仍然出错... – socket

+0

它工作正常终于~~哈哈〜谢谢〜:-) – socket

相关问题