Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python read()返回的数据似乎比读取的数据少_Python_File Io - Fatal编程技术网

Python read()返回的数据似乎比读取的数据少

Python read()返回的数据似乎比读取的数据少,python,file-io,Python,File Io,谁能告诉我为什么数据的长度远小于文件末尾的位置?我本以为这些都是平等的 >>> target = open('target.jpg') >>> print target.tell() 0 >>> data = target.read() >>> print target.tell() 40962 >>> print len(data) 52 以二进制模式打开文件: target = open('targe

谁能告诉我为什么数据的长度远小于文件末尾的位置?我本以为这些都是平等的

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

以二进制模式打开文件:

target = open('target.jpg','rb')
对于不是以二进制方式打开的文件,我不会信任tell()



后来:事实上,在回顾这些评论时,我应该说我不相信以文本形式打开的二进制文件上的
read

啊哈!我喜欢简单的解决方案。只要我被允许,我会尽快接受。真正发生的事情是,当您不以二进制形式读取文件时,read()命令会在第一个被解释为EOF字符的字符处停止。@Justin Peel:真正发生的事情是,当且仅当您在Windows上运行时,它会在第一个Ctrl-Z(\x1A)字节处停止。@John,哦,好的,我一直认为这是某种EOF,但这更有意义。@Justin Peel:这是“某种EOF”,通过MS-DOS从CP/M继承而来。CP/M以128字节扇区记录文件大小,因此文本文件需要一些带内EOF信号。当从python控制台工作时,它将为您输出结果。我没有考虑,因为我粘贴了一个脚本,我写的控制台。另外,当我期望值可能是
None
时,我经常使用
print
,因为这样实际上可以看到它。