擅长:python、mysql、java
<p>如果您不关心性能,或不信任您的操作系统/文件系统/驱动器的磁盘缓存:</p>
<pre><code>with open('hugedata.txt') as infile:
for line in infile:
with open(line[:2] + '.txt', 'a') as outfile:
outfile.write(line)
</code></pre>
<p>但是,不断地重新打开和重新关闭(并因此刷新)文件将意味着您永远无法获得缓冲的好处,而且只有这么多磁盘缓存可以弥补这一点,所以,您可能需要考虑预打开所有文件。因为只有7个,所以这很简单:</p>
^{pr2}$
<p>或者,更有力地说:</p>
<pre><code>files = collections.defaultdict(lambda s: open(s+'.txt', 'w'))
try:
with open('hugedata.txt') as infile:
for line in infile:
files[line[:2]].write(line)
finally:
for file in files:
file.close()
</code></pre>
<p>(您可以编写一个<code>with</code>语句来自动完成关闭,但是在不同的Python版本中它会有所不同;这有点笨拙,但适用于从2.4到3.5甚至更高版本的所有内容,而且由于您还没有告诉我们您的平台或Python版本,这看起来更安全。)</p>