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 '[EMAIL PROTECTED]'.split('@')])"
Umm... I tried using this method and it froze. Infiinite loop, I'm guessing. -- http://mail.python.org/mailman/listinfo/python-list