I’m new to Python, and I need to do a parsing exercise. I got a file, and I need to parse it (just the headers), but after the process, i need to keep the file the same format, the same extension, and at the same place in disk, but only with the differences of new headers..
I tried this code…
for line in open ('/home/name/db/str/dir/numbers/str.phy'):
if line.startswith('ENS'):
linepars = re.sub ('ENS([A-Z]+)0+([0-9]{6})','\\1\\2',line)
print linepars
..and it does the job, but I don’t know how to “overwrite” the file with the new parsing.
The easiest way, but not the most efficient (by far, and especially for long files) would be to rewrite the complete file.
You could do this by opening a second file handle and rewriting each line, except in the case of the header, you’d write the parsed header. For example,
EDIT: Note that this does not use
readlines(), so its more memory efficient. It also does not store every output line, but only one at a time, writing it to file immediately.Just as a cool trick, you could use the
withstatement on the input file to avoid having to close it (Python 2.5+):P.S. Welcome 🙂