Reading files into a 2D list.
Larry Bates
lbates at syscononline.com
Wed May 11 09:54:35 EDT 2005
Few observations.
1) Don't concatenate pathnames yourself use os.path.join, that
makes your code portable.
lexi_file = open(os.path.join(sys.path[0],"lexi",files), "r")
2) Start with an empty list and append your "lines" lists:
files_and_lines=[]
filenumber = 0
for files in file_names:
fpath=os.path.join(sys.path[0]),"lexi", files)
try:
lexi_file = open(fpath, "r")
files_and_lines.append(lexi_file.readlines())
except(IOError):
print "Something went wrong trying to read the file:"
print "'%s'" % fpath
lexi_file.close() # Remember to close each file
Now you have:
files_and_lines[0][0] -> Line 1 of the first file
files_and_lines[0][1] -> Line 2 of the first file
.
.
.
files_and_lines[0][n] -> Line n of the first file
files_and_lines[1][0] -> Line 1 of the second file
.
.
.
Larry Bates
Oyvind Ostlund wrote:
> I am not sure what the right syntax is here. So please help me out (started 2 days ago).
>
> 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 + "'"
>
>
>
> But that was not very sucksessfully. I am not even sure on how to define an empty 2D list. Thanks for all help.
>
> ØØ
More information about the Python-list
mailing list