<p>如果文件的<em>格式</em>与行号有关的<em>固定</em>,则此解决方案将仅更改两行:</p>
<pre><code>with open('big.dmp') as inf, open('out.txt', 'w') as outf:
data = inf.readlines()
data[4] = ' epoch (in days) = 9999.\n' # line with epoch
data[6] = 'COMPSTAR r=2201 d=3330 m= 12\n' # line with COMPSTAR
outf.writelines(data)
</code></pre>
<p>生成此输出文件:</p>
<pre><code>)O+_05 Big-body initial data (WARNING: Do not delete this line!!)
) Lines beginning with `)' are ignored.
)---------------------------------------------------------------------
style (Cartesian, Asteroidal, Cometary) = Cartesian
epoch (in days) = 9999.
)---------------------------------------------------------------------
COMPSTAR r=2201 d=3330 m= 12
4.570923967127310E-01 1.841433531828977E+01 0.000000000000000E+00
-6.207379670518027E-03 1.540861575481520E-04 0.000000000000000E+00
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
</code></pre>
<p>显然,如果行号不一致,这将不起作用,但我想我会提供它,以防您的数据格式在行号方面是一致的。你知道吗</p>
<p>而且,由于它一次将整个文件读入内存,因此对于真正的大文件来说,它不是一个理想的解决方案。你知道吗</p>
<p>使用<code>with</code>打开文件的好处是,当您处理完文件或遇到异常时,它们会自动关闭。你知道吗</p>
<p>有更灵活的解决方案(搜索字符串,逐行处理文件),但如果您的数据是固定的和小的,那么利用这些因素没有坏处。有个聪明人曾经说过“简单胜于复杂”</p>