Reading files into a 2D list.

Klaus Alexander Seistrup klaus at seistrup.dk
Wed May 11 06:14:25 EDT 2005


Øyvind Østlund wrote:

> I have a list of about 20 files that I want to read line by
> line into a 2D list. So the first dimension will be each file,
> and the second every line in that file.
>
> I tried to do something like this:
>
>     files_and_lines = [][]
>     filenumber = 0
>     
>     for files in file_names:
>         try:
>             lexi_file = open(str(sys.path[0]) + "/lexi/" + files, "r")
>             files_and_lines[filenumber] = lexi_file.readlines()
>             filenumber = filenumber + 1
>
>         except(IOError):
>             print "Something went wrong trying to read the file:"
>             print "'" + str(sys.path[0]) + files + "'"

I'm not sure I understand you.  Do you wish to end up with an array 
like this:

#v+

    [fileName0][fileLines0]
    [fileName1][fileLines1]
      ...
    [fileNameN][fileLinesN]

#v-

In that case try something like:

#v+

>>> files_and_lines = []
>>> for name in file_names:
>>>     files_and_lines.append([name, open(name, 'r').readlines()])
>>> print 'Read %d files' % (len(files_and_lines),)

#v-

Add proper error checking.

At least, I think the [].append() method is what you're looking for.

Cheers,

-- 
Klaus Alexander Seistrup
Magnetic Ink, Copenhagen, Denmark
http://magnetic-ink.dk/



More information about the Python-list mailing list