誰能告訴我爲什麼數據的長度遠遠小於文件末尾的位置?我希望這些都是平等的。Python讀取()似乎返回的數據比它讀取的要少
>>> target = open('target.jpg')
>>> print target.tell()
0
>>> data = target.read()
>>> print target.tell()
40962
>>> print len(data)
52
誰能告訴我爲什麼數據的長度遠遠小於文件末尾的位置?我希望這些都是平等的。Python讀取()似乎返回的數據比它讀取的要少
>>> target = open('target.jpg')
>>> print target.tell()
0
>>> data = target.read()
>>> print target.tell()
40962
>>> print len(data)
52
以二進制方式打開文件:
target = open('target.jpg','rb')
我不會對沒有打開二進制文件信任告訴()。
後來:實際上,在審查意見,我應該說我不會打開文本二進制文件信任read
。
啊哈!當解決方案很簡單時,我喜歡它。只要我被允許,我會盡快接受。 – Jake 2010-11-08 03:31:54
真正發生的是,當你沒有以二進制形式讀取文件時,read()命令會停留在被解釋爲EOF字符的第一個字符處。 – 2010-11-08 03:43:10
@Justin Peel:當且僅當您在Windows上運行時,實際發生的事情是,它停止在第一個Ctrl-Z(\ x1A)**字節**上。 – 2010-11-08 05:14:39
btw-您應該不需要按照您的示例所示「打印」。從python控制檯工作時,它會爲您輸出結果。 – monkut 2010-11-08 04:34:22
歡呼@monkut。我沒有考慮到這一點,因爲我從一個腳本粘貼到控制檯中。另外,當我預期這個值可能是'None'時,我經常使用'print',因爲那樣它實際上可以被看到。 – Jake 2010-11-08 20:55:45