Jim Mooney Py3.4.3winXP wrote: > function. Is there > a way around this, other than passing the file as I have here? Also, is it > a good idea to pass a file handle like that or is there a better way?
Not necessarily better, but instead of passing around the file you can rewrite your code to use generators: import csv def make_lines(): with open('co2-sample.csv') as co2: yield htbegin for linelist in csv.reader(co2): yield from fprint(linelist) yield htend def fprint(linelist): yield ("<td class=l>{}</td><td>{}</td><td>{}</td>" "<td>{}</td><td>{}</td><td>{}</td>\n").format(*linelist) yield '</tr>\n' if __name__ == "__main__": with open('output.html', 'w') as ht: ht.writelines(make_lines()) Python versions before 3.3 don't understand yield from fprint(linelist) You have to write for s in fprint(linelist): yield s instead. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor