Sayth Renshaw wrote, on January 03, 2017 6:54 AM > > Hi > > This is simple, but its getting me confused. > > I have a csv writer that opens a file and loops each line of > the file for each file and then closes, writing one file. > > I want to alter the behaviour to be a written file for each > input file. I saw a roundrobin example however it failed for > me as you cannot get len(generator) to use a while loop on. > it exhausts > > should I use the same for again after the with open? > > rootobs in this code is my generator and I am already looping > it however > def data_attr(roots): > """Get the root object and iter items.""" > for file in rootobs: > base = os.path.basename(file.name) > write_to = os.path.join("output", > os.path.splitext(base)[0] + ".csv") > with open(write_to, 'w', newline='') as csvf: > race_writer = csv.writer(csvf, delimiter=',') > race_writer.writerow( > ["meet_id", "meet_venue", "meet_date", "meet_rail", > ... > # other categories here > ... > "jockeysurname", "jockeyfirstname"]) > for xml_data in roots: > ... > # parsing code > for noms in race_child: > if noms.tag == 'nomination': > race_writer.writerow( > [meet_id, meet_venue, meet_date, > ... > #parsing info removed > noms.get("jockeyfirstname")]) > > Cheers > Sayth
What's the code for your generator? And I don't see where you call 'next'. -- https://mail.python.org/mailman/listinfo/python-list