Combining several text files

rdmurray at bitdance.com rdmurray at bitdance.com
Mon Feb 2 15:18:30 EST 2009


Quoth Eric <eric.shain at gmail.com>:
> This is my first post, so please advise if I'm not using proper
> etiquette. I've actually searched around a bit and while I think I can
> do this, I can't think of a clean elegant way. I'm pretty new to
> Python, but from what I've learned so far is that there is almost
> always an easier way.
> 
> I have to parse several log files. I've already written a working
> parser. The log files are simple text files that when they get to a
> certain size are renamed to append a number. So, you might end up
> with:
> 
> filename.log.2
> filename.log.1
> filename.log
> 
> The higher the number, the older the file. I want to search for all
> the files in a directory with "filename.log" as part of their name.
> Then I can do one of two things. First I could combine them so that
> the resulting file ends up with the oldest on top and newest on the
> bottom. Otherwise, I could just iterate over the multiple files within
> my parser.
> 
> I don't need working code (that makes things too easy), just clear
> suggestions to a Python newcomer to speed me on my way.

My first thought would be to do something like this (assuming
you are on a unix variant):

    yourscript `ls -tr filename.log*`

and then in 'yourscript' do:

    import fileinput
    for line in fileinput.input():
        #process the lines

This has the nice advantage of giving you access to the source filename
and line number within its source file of each line, in case that
is useful.

This is an example of why Python is referred to as "Batteries Included" :)

--RDM




More information about the Python-list mailing list