我正在尝试了解有关照片中包含的 exif 数据的更多信息。我不明白为什么我从以下代码中得到结果:
file = open("IMG.JPG", "rb")
print(file.read(2))
print(file.read(2))
给我一个结果:
>>>
b'\xff\xd8'
b'\xff\xe1'
为什么它们不同?第一个结果行是有道理的,FFD8 表示它是一个 jpeg。
这是因为每次调用 file.read(x) 时,它都会读取下x 个项目,而不是前x 个项目。
file.read
调用后将继续阅读下一部分。如果你读到最后,然后再次调用它,它不会返回任何内容。
例如,我有一个名为 的文件test.txt
,如下所示:
abcdefg
hijklmn
让我们尝试阅读它:
>>> with open('test.txt') as f:
data = f.read(7)
data2 = f.read()
>>> data
'abcdefg'
>>> data2
'\nhijklmn'
看?
现在,如果您想两次获得相同的东西,您可以使用以下命令重新开始阅读file.seek
:
>>> with open('test.txt') as f:
data = f.read(7)
f.seek(0)
data2 = f.read(7)
>>> data
'abcdefg'
>>> data2
'abcdefg'
希望这可以帮助!
每次 read() 都会移动文件指针。如果您想重复阅读相同的内容(为什么?),那么您可以使用
filename.seek(0)
将文件指针倒回到文件的开头。