2010-11-08 52 views
1

誰能告訴我爲什麼數據的長度遠遠小於文件末尾的位置?我希望這些都是平等的。Python讀取()似乎返回的數據比它讀取的要少

>>> target = open('target.jpg') 
>>> print target.tell() 
0 
>>> data = target.read() 
>>> print target.tell() 
40962 
>>> print len(data) 
52 
+0

btw-您應該不需要按照您的示例所示「打印」。從python控制檯工作時,它會爲您輸出結果。 – monkut 2010-11-08 04:34:22

+0

歡呼@monkut。我沒有考慮到這一點,因爲我從一個腳本粘貼到控制檯中。另外,當我預期這個值可能是'None'時,我經常使用'print',因爲那樣它實際上可以被看到。 – Jake 2010-11-08 20:55:45

回答

5

以二進制方式打開文件:

target = open('target.jpg','rb') 

我不會對沒有打開二進制文件信任告訴()。


後來:實際上,在審查意見,我應該說我不會打開文本二進制文件信任read

+0

啊哈!當解決方案很簡單時,我喜歡它。只要我被允許,我會盡快接受。 – Jake 2010-11-08 03:31:54

+0

真正發生的是,當你沒有以二進制形式讀取文件時,read()命令會停留在被解釋爲EOF字符的第一個字符處。 – 2010-11-08 03:43:10

+2

@Justin Peel:當且僅當您在Windows上運行時,實際發生的事情是,它停止在第一個Ctrl-Z(\ x1A)**字節**上。 – 2010-11-08 05:14:39