我正在尝试了解有关照片中包含的exif数据的更多信息。我不明白的是为什么我从以下代码得到结果:
file = open("IMG.JPG", "rb")
print(file.read(2))
print(file.read(2))
给我一个结果:
>>>
b'\xff\xd8'
b'\xff\xe1'
为什么他们不一样?第一个结果行是有道理的,FFD8表示它是一个jpeg。
答案 0 :(得分:5)
这是因为每次调用file.read(x)时,它都会读取 next x项,而不是第一个 x项。
答案 1 :(得分:1)
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'
希望这有帮助!
答案 2 :(得分:0)
每次阅读()都会移动文件指针。如果你想反复阅读同一个东西(为什么?)那么你可以使用
filename.seek(0)
将文件指针倒回到文件的开头。