擅长:python、mysql、java
<p>最简单(Python2.6或更高版本):</p>
<pre><code>import array
idlist = array.array('l')
with open(filename, "rb") as f:
while True:
try: idlist.fromfile(f, 2000)
except EOFError: break
idtuple = tuple(idlist)
</code></pre>
<p>元组是不可变的,因此它们不能以增量方式构建:因此您必须构建一个不同的(可变的)序列,然后在它的末尾调用<code>tuple</code>。当然,如果您实际上不需要一个元组,那么您可以保存最后一个代价高昂的步骤,并保留数组或列表等。无论如何,最好避免践踏内置名称,如<code>file</code>;-)。</p>
<p>如果<em>让</em>使用<code>struct</code>模块来完成由<code>array</code>模块处理得最好的任务(例如,由于bet的原因)</p>
<pre><code>idlist = [ ]
with open(filename, "rb") as f:
while True:
bytes_read = f.read(struct.calcsize("=l"))
if not bytes_read: break
oneid = struct.unpack("=l", bytes_read)[0]
idlist.append(oneid)
</code></pre>
<p><code>with</code>语句(在2.5中还提供了一个将来的导入表单)比旧的try/finally在清晰度和简洁性方面更好。</p>