2013-04-16 46 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

相關問題