Books Database

John Hunter jdhunter at ace.bsd.uchicago.edu
Thu Mar 6 11:45:08 EST 2003


>>>>> "Eliran" == Eliran Gonen <eg at rootshell.be> writes:

    Eliran> Alex Martelli <aleaxit at yahoo.com>:
    >> NAH!  Why do so much work?!  Just read the db into memory,
    >> remove whatever you want from the db _variable_, and overwrite
    >> as above.  At 30KB file size, or even quite a bit more, that
    >> will be lightning-fast.

    Eliran> Nope. I meant, let say I have a file:

    Eliran> 1|2|3|4 2|3|4|5 a|b|c|d d|b|a|c

    Eliran> and the user want to remove line 3 (a|b|c|d).  So in my
    Eliran> curses application he enters '3' and then I need to remove
    Eliran> line 3. I can not know how many characters are there so I
    Eliran> have to count \n's


If you want to keep track of lines by number you can do

  books = file('books.dat').readlines()

If you want to remove the 4th entry (indexing from 0), do

  books.remove(books[3])

You can process an individual line with

  vals = books[2].split('|')

When you are done and want to save the results, you can do

  file('books.dat', 'w').writelines(books)

But the point is that you process everything in memory and then
overwrite the file when done rather that trying to manipulate
the individual lines of the file directly.

John Hunter





More information about the Python-list mailing list