<p>我不太确定替换文件中0.5678的逻辑,因此我使用了一个函数-将其更改为您需要的任何内容,或者更详细地解释您想要的内容。最后一个号码?只有浮点数?在</p>
<p>尝试:</p>
<pre><code>import os
dirname = "14432826"
lines_distance= 4
def replace_whatever(line):
# Put your logic for replacing here
return line.replace("0.5678", "0")
for filename in filter(lambda x:x.endswith(".pz2") and not x.startswith("m_"), os.listdir(dirname)):
print filename
with open(os.path.join(dirname, filename), "r") as f_in, open(os.path.join(dirname,"m_%s" % filename), "w") as f_out:
replace_tasks = []
for line in f_in:
# search marker in line
if line.strip().startswith("translate"):
print "Found marker in", line,
replace_tasks.append(lines_distance)
# replace if necessary
if len(replace_tasks)>0 and replace_tasks[0] == 0:
del replace_tasks[0]
print "line to change is", line,
line_to_write = replace_whatever(line)
else:
line_to_write = line
# Write to output
f_out.write(line_to_write)
# decrease counters
for i, task in enumerate(replace_tasks):
replace_tasks[i] -= 1
</code></pre>
<p>代码中的注释应该有助于理解。主要概念是列表<code>replace_tasks</code>,它记录下一行要修改的时间。在</p>
<p>备注:代码示例表明文件中的数据是结构化的。阅读此结构并对其进行操作,而不是在纯文本文件上搜索和替换方法,这无疑是一种节省。在</p>