On 3/7/2013 5:10 AM, Dave Angel wrote: > On 03/07/2013 01:33 AM, John Nagle wrote: >> Here's a traceback that's not helping: >> > > A bit more context would be helpful. Starting with Python version.
Sorry, Python 2.7. > > If that isn't enough, then please give the whole context, such as where > zipelt and filename came from. And don't forget to specify Python > version. Version 3.x treats nonbinary files very differently than 2.x Here it is, with some email wrap problems. John Nagle def dofilecsv(self, infilename, infdraw) : """ Loader for Companies House company data, with files already open. """ self.logger.info('Converting "%s"' % (infilename, )) # log (pathpart, filepart) = os.path.split(infilename) # split off file part to construct outputfile) (outfile, ext) = os.path.splitext(filepart) # remove extension outfile += ".sql" # add SQL suffix outfilename = os.path.abspath(os.path.join(self.options.destdir, outfile)) # ***NEED TO INSURE UNIQUE OUTFILENAME EVEN IF DUPLICATED IN ZIP FILES*** decoder = codecs.getreader('utf-8') # UTF-8 reader with decoder(infdraw,errors="replace") as infd : with codecs.open(outfilename, encoding='utf-8', mode='w') as outfd : headerline = infd.readline() # read header line self.doheaderline(headerline) # process header line reader = csv.reader(infd, delimiter=',', quotechar='"') # CSV file for fields in reader : # read entire CSV file self.doline(outfd, fields) # copy fields self.logstats(infilename) # log statistics of this file def dofilezip(self, infilename) : """ Do a ZIP file containing CSV files. """ try : inzip = zipfile.ZipFile(infilename, "r", allowZip64=True) # try to open zipdir = inzip.infolist() # get objects in file for zipelt in zipdir : # for all objects in file self.logger.debug('ZIP file "%s" contains "%s".' % (infilename, zipelt.filename)) (infile, ext) = os.path.splitext(zipelt.filename) # remove extension if ext.lower() == ".csv" : # if a CSV file with inzip.open(zipelt.filename,"r") as infd : # do this file self.dofilecsv(infile, infd) # as a CSV file else : self.logger.error('Non-CSV file in ZIP file: "%s"' % (zipelt.filename,)) self.errorcount += 1 # tally except zipfile.BadZipfile as message : # if trouble self.logger.error('Bad ZIP file: "%s"' % (infilename,)) # note trouble self.errorcount += 1 # tally def dofile(self, infilename) : """ Loader for Companies House company data """ (sink, ext) = os.path.splitext(infilename) # get extension if ext == ".zip" : # if .ZIP file self.dofilezip(infilename) # do ZIP file elif ext == ".csv" : self.logger.info('Converting "%s"' % (infilename,))# log with open(infilename, "rb") as infd : self.dofilecsv(infilename, infd) # do self.logstats(infilename) # log statistics of this file else : self.logger.error('File of unexpected type (not .csv or .zip): %s ' % (infilename,)) self.errorcount += 1 -- http://mail.python.org/mailman/listinfo/python-list