def __init__(self, file): self.fileData = rthCls.Filename(file) rth.printToFile('Procesando archivo de la CGR: %s' \ % self.fileData.filext, True) self.data = () self.rawData = self.file2list(file) self.tipo = self.getTipo() self.procesarData()
def file2list(self, path): fileData = open(path, 'r') fileList = () count = 0 for line in fileData: fileList += (line, ) count += 1 fileData.close() rth.printToFile(' - %d líneas' % count) return fileList
def readNload(fileDir): fileInfo = rthCls.Filename(fileDir) if fileInfo.isDir: ready2import = () for file in os.listdir(fileDir): filename = os.path.abspath(os.path.join(fileDir, file)) ready2import += (readNload(filename),) return ready2import else: if fileInfo.extension == ".txt" or fileInfo.name == "Regdsc": cgrDoc = CgrDoc(fileDir) rth.printToFile(" - Lectura de archivo completa") return (cgrDoc,)
def getTipo(self): fileData = self.rawData maxLen = 0 for line in fileData: maxLen = len(line) if (len(line) > maxLen) else maxLen if self.fileData.extension == '.txt': tipo = 'salarios' if (maxLen > 200) else 'descuentos' else: if self.fileData.name == 'Regdsc' and maxLen >= 80 and maxLen <= 82: tipo = 'conciliacion' else: raise IOError('No podemos procesar este archivo: %s' \ % self.fileData.filext) rth.printToFile(' - Archivo de %s' % tipo) return tipo
ver = "v1.0.0" rth.printTxtHeader(titl, ver) cgrDocs = () if len(sys.argv) == 1: raise rthCls.MyException("DragOnly") for index, fileDir in enumerate(sys.argv): if index > 0: cgrDocs += (readNload(fileDir),) cgrDocsFlat = [element for tupl in cgrDocs for element in tupl] if len(cgrDocsFlat) > 0: rth.printToFile("Generando archivo de Excel", True) reporte = Reporte.Reporte() for cgrDoc in cgrDocsFlat: reporte.cargar(cgrDoc.tipo, cgrDoc.data, cgrDoc.getColKeys()) path = rthCls.Filename(sys.argv[1]).head reporte.save(path, "planillas") rth.printToFile("¡LISTO!") except rthCls.MyException as e: if str(e) == "DragOnly": msg = ( "\n\nADVERTENCIA:\n" "Para utilizar este programa debe arrastrar los archivos a procesar \n" "y arrojarlos sobre el ícono del programa. \n\n"