Process multiple files

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Doran, Harold

    Process multiple files

    Say I have multiple text files in a single directory, for illustration
    they are called "spam.txt" and "eggs.txt". All of these text files are
    organized in exactly the same way. I have written a program that parses
    each file one at a time. In other words, I need to run my program each
    time I want to process one of these files.

    However, because I have hundreds of these files I would like to be able
    to process them all in one fell swoop. The current program is something
    like this:

    sample.py
    new_file = open('filename. txt', 'w')
    params = open('eggs.txt' , 'r')
    do all the python stuff here
    new_file.close( )

    If these files followed a naming convention such as 1.txt and 2.txt I
    can easily see how these could be parsed consecutively in a loop.
    However, they are not and so is it possible to modify this code such
    that I can tell python to parse all .txt files in a certain directory
    and then to save them as separate files? For instance, using the example
    above, python would parse both spam.txt and eggs.txt and then save 2
    different files, say as spam_parsed.txt and eggs_parsed.txt .

    Thanks






  • Duncan Booth

    #2
    Re: Process multiple files

    "Doran, Harold" <HDoran@air.org wrote:
    If these files followed a naming convention such as 1.txt and 2.txt I
    can easily see how these could be parsed consecutively in a loop.
    However, they are not and so is it possible to modify this code such
    that I can tell python to parse all .txt files in a certain directory
    and then to save them as separate files? For instance, using the example
    above, python would parse both spam.txt and eggs.txt and then save 2
    different files, say as spam_parsed.txt and eggs_parsed.txt .
    >
    This isn't exactly what you asked for, but have you looked at the fileinput
    module: it will process a list of filenames pointing stdin at each file in
    turn, optionally it can work inplace, but without that option I think it is
    pretty close to what you want (warning, untested code follows):

    output = None
    for line in fileinput.input (n for n in glob.glob('*.tx t')
    if not n.endswith('_pa rsed.txt')):

    if fileinput.isfir stline():
    if output: output.close()
    output = open(fileinput. filename().repl ace('.', '_parsed.', 1),
    'w')

    print >>output, "parsed:", line.strip()

    if output:
    output.close()

    Comment

    Working...