擅长:python、mysql、java
<p>当使用file对象作为迭代器时,Python会进行内部缓冲,这会扭曲tell()的结果。只需继续使用readline。还有</p>
<p>(编辑:哎呀,我第一次没看懂你的问题!)在</p>
<ul>
<li>按照@falsetru的建议阅读二进制文件</li>
<li>第一次读的时候你不需要特殊情况</li>
</ul>
<p>这应该可以做到:</p>
<pre><code>chrDict = {}
with open('file.txt','rb') as fmaps:
while True:
pos = fmaps.tell()
ln = fmaps.readline()
if not ln:
break
key = ln.split()[0]
if key not in chrDict:
chrDict[key] = pos
</code></pre>