Writing to a certain line?

Tommy B tommy04 at gmail.com
Tue Jun 6 17:46:54 EDT 2006


bruno at modulix wrote:
> Tommy B wrote:
> > I was wondering if there was a way to take a txt file and, while
> > keeping most of it, replace only one line.
>
> <meta>
> This is a FAQ (while I don't know if it's in the FAQ !-), and is in no
> way a Python problem. FWIW, this is also CS101...
> </meta>
>
> You can't do this in place with a text file (would be possible with a
> fixed-length binary format).
>
> The canonical way to do so - whatever the language, is to write the
> modified version in a new file, then replace the old one.
>
> import os
> old = open("/path/to/file.txt", "r")
> new = open("/path/to/new.txt", "w")
> for line in old:
>   if line.strip() == "Bob 62"
>     line = line.replace("62", "66")
>   new.write(line)
> old.close()
> new.close()
> os.rename("/path/to/new.txt", "/path/to/file.txt")
>
> If you have to do this kind of operation frequently and don't care about
> files being human-readable, you may be better using some lightweight
> database system (berkeley, sqlite,...) or any other existing lib that'll
> take care of gory details.
>
> Else - if you want/need to stick to human readable flat text files - at
> least write a solid librairy handling this, so you can keep client code
> free of technical cruft.
>
> HTH
> --
> bruno desthuilliers
> python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
> p in 'onurb at xiludom.gro'.split('@')])"

Umm... I tried using this method and it froze. Infiinite loop, I'm
guessing.




More information about the Python-list mailing list