CSV, lists, and functions

Dave Angel davea at davea.name
Wed Mar 20 02:29:41 CET 2013


On 03/19/2013 06:59 PM, C.T. wrote:
> Hello,
>
> Currently doing a project for class an I'm stuck. I have a csv file that I'm suppose to extract some information from. I've created a function that ignores the first six lines of the csv file and creates a list of values in a particular column. Here is the code:
>
>
> def get_values(file, index):
>
>      '''(file object, int) -> list
>      Return a list of states and corresponding values at a prticular index in file.'''
>
>      values_list = []
>      file.readlines(900)#skipping first 6 lines of file
>      for line in file:
>          line_list = line.split(',')
>          values_list.append(line_list[index])
>
>      return values_list
>
>
>
> #Prompt for file and prompt again if file is not found
> while True:
>      try:
>          file_name = input('Enter in file name: ')
>          input_file = open( file_name, 'r')
>          break
>
>      except IOError:
>           print('File not found.')
>
> heart_list = get_values(input_file, 1)
> motor_list = get_values(input_file, 4)
>
> I can see a list of values for heart_list, but when I print the motor_list I get back an empty list. I think its because I'm not closing the file before calling the function again, but I don't want to prompt for the same file over and over again because I need to pull at least 10 columns from this csv files and turn them into lists. Any help is appreciated.
>

f.seek(0)

will reposition the file to the beginning.

But you should switch to using the csv module.  And unless you have data 
that consists of millions of lines, you should just read the whole thing 
in once, and then extract the various columns by simple list 
manipulations and/or comprehensions.


-- 
DaveA



More information about the Python-list mailing list