Самый простой способ, но не самый эффективный (безусловно, и особенно для длинных файлов) - переписать весь файл.
Вы можете сделать это, открыв второй дескриптор файла и переписав каждую строку, за исключением того, что в случае заголовка вы бы написали проанализированный заголовок.Например,
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 Добро пожаловать: -)