最简单但不是最有效的方法(到目前为止,尤其是对于长文件)是重写整个文件。
您可以通过打开第二个文件句柄并重写每一行来做到这一点,除了在标题的情况下,您将编写已解析的标题。例如,
fr = open('/home/name/db/str/dir/numbers/str.phy')
fw = open('/home/name/db/str/dir/numbers/str.phy.parsed', 'w') # Name this whatever makes sense
for line in fr:
if line.startswith('ENS'):
linepars = re.sub ('ENS([A-Z]+)0+([0-9]{6})','\\1\\2',line)
fw.write(linepars)
else:
fw.write(line)
fw.close()
fr.close()
编辑:请注意,这不使用readlines()
,因此它的内存效率更高。它也不存储每个输出行,而是一次只存储一个,立即将其写入文件。
作为一个很酷的技巧,您可以使用with
输入文件上的语句来避免关闭它(Python 2.5+):
fw = open('/home/name/db/str/dir/numbers/str.phy.parsed', 'w') # Name this whatever makes sense
with open('/home/name/db/str/dir/numbers/str.phy') as fr:
for line in fr:
if line.startswith('ENS'):
linepars = re.sub ('ENS([A-Z]+)0+([0-9]{6})','\\1\\2',line)
fw.write(linepars)
else:
fw.write(line)
fw.close()
PS欢迎:-)