if ``taxonomy_file`` is a path to a file, you should call it ``taxonomy_filepath``. However it usually makes your code a lot more testable if you pass a ``file`` object in. That way, when you write your tests you can pass a list of lines in, as the interface for iterating over a list of lines is the same as the interface for iterating over a file object. For example:

```
def get_first_character_of_all_lines(lines):
   """
   lines: a file object
   """
   results = []
   for line in lines:
      results.append(line[0])
   return results
```

could be called either as:

```
get_first_character_of_all_lines(open(path_to_file,'U'))
```
or
``` 
get_first_character_of_all_lines(['some text','some other text'])
```

That means that when you write your test code, you don't need to create a temporary file on disk.

Does that make sense?