擅长:python、mysql、java
<p>我会这么做:</p>
<ul>
<li>读取整个文件</li>
<li>把它分成块</li>
<li>将每个块拆分为行</li>
<li>添加任何需要的数据</li>
<li>重做整个街区</li>
<li>重做整个文件</li>
</ul>
<hr/>
<pre><code>from collections import OrderedDict
default_sev = 4
default_VM = "XXXXXXXXXXXXXX"
default_sevowner = "YYYYYYYYYYYY"
def add_missing(data_block):
data_block = data_block.strip("}\n")
lines = OrderedDict([line.split() for line in data_block.splitlines()])
if "Sev" not in lines:
lines["Sev"] = default_sev
if "Vmowner" not in lines:
lines["Vmowner"] = default_VM
if "SevOwner" not in lines:
lines["SevOwner"] = default_sevowner
data = ""
for key, value in lines.items():
data += " {: <16}{}\n".format(key, value)
return "define host{{\n{}\n}}".format(data)
with open(sys.argv[1]) as f1:
data = f1.read()
blocks = data.split('define host{') #split into blocks
blocks = filter(None, blocks) #remove empty blocks
with open(sys.argv[1], 'w') as f1:
for block in blocks:
f1.write(add_missing(block))
</code></pre>