Buenas, tengo un archivo de texto con datos, cada dato de cliente es separado por un caracter especifico, por lo tanto divido por cliente, para la busqueda dentro de un cliente por numero de codigo lo busco en la linea especifica, necesito hacer el mismo ordenamiento pero segun otro txt donde estan los mismos codigos pero en otro orden, la necesidad es ordenar de acuerdo al orden del otro txt que contiene los codigos de cada cliente. adjunto el codigo. gracias
import sys
import os, re, io
excel_path = 'C:\\2 semestre\\cod_clientes.csv'
output_path = 'C:\\2 semestre\\'
def search_for_id(id):
global _cache_excel
if '_cache_excel' not in globals():
import pyodbc
conn = pyodbc.connect(
"Driver={Microsoft Excel Driver (*.xls)}; Dbq=%s" % excel_path,
autocommit=True)
cursor = conn.cursor()
_cache_excel = [str(x[0]).split('.')[0] for x in list(cursor.execute("select * from [hoja1$]"))]
print (_cache_excel)
return id in _cache_excel
def cliente_encontrado(p_nro_cuenta, file_path):
v_encontrado = 0
with open(file_path, 'r') as archivo_clientes:
for nro_cuenta in archivo_clientes:
nro_cuenta = re.sub('[^0-9]','', nro_cuenta)
if nro_cuenta == p_nro_cuenta:
print ('Encontrado ' + p_nro_cuenta)
v_encontrado = 1
break
return v_encontrado
# @redirect_to_watch
def main():
directorio = 'C:\\2 semestre\\'
for elemento_directorio in os.listdir(directorio):
url_archivo = os.path.join(directorio, elemento_directorio)
if os.path.isfile(url_archivo):
fuente = open(url_archivo, 'r')
archivo_encontrados = None
archivo_noencontrados = None
try:
documento = []
i = 0
nro_cuenta = ''
while True:
linea = fuente.readline()
if not linea:
break
match = re.search('\(nvo_cliente\.jdt\)', linea)
if match:
if nro_cuenta != '':
#busqueda
if cliente_encontrado(nro_cuenta, 'C:\\2 semestre\\clientes.txt') == 1:
if archivo_encontrados is None:
archivo_encontrados = open(os.path.join( directorio + '\\encontrados', elemento_directorio) , 'w' )
archivo_encontrados.write('%!\n')
if(documento[0][0:1] != '('):
documento[0] = documento[0][7:]
documento[0] = re.sub('INICIO_LINEA_','INICIO_LINEA', documento[0])
archivo_encontrados.write(''.join(documento))
else:
if archivo_noencontrados is None:
archivo_noencontrados = open(os.path.join( directorio + '\\no-encontrados', elemento_directorio) , 'w')
archivo_noencontrados.write('%!\n')
if(documento[0][0:1] != '('):
documento[0] = documento[0][7:]
documento[0] = re.sub('INICIO_LINEA_','INICIO_LINEA', documento[0])
archivo_noencontrados.write(''.join(documento))
nro_cuenta = ''
i = 0
documento = []
documento += [linea]
match_cuenta = re.search('([\s]+)([0-9]+)$', linea)
if i == 7 and match_cuenta:
nro_cuenta = match_cuenta.group(2)
print ('Cuenta en texto: ',match_cuenta.group(2))
i += 1
if nro_cuenta != '':
#busqueda
if cliente_encontrado(nro_cuenta, 'C:\\2 semestre\\clientes.txt') == 1:
if archivo_encontrados is None:
archivo_encontrados = open(os.path.join( directorio + '\\encontrados', elemento_directorio) , 'w' )
archivo_encontrados.write('%!\n')
if(documento[0][0:1] != '('):
documento[0] = documento[0][7:]
documento[0] = re.sub('INICIO_LINEA_','INICIO_LINEA', documento[0])
archivo_encontrados.write(''.join(documento))
else:
if archivo_noencontrados is None:
archivo_noencontrados = open(os.path.join( directorio + '\\no-encontrados', elemento_directorio) , 'w')
archivo_noencontrados.write('%!\n')
if(documento[0][0:1] != '('):
documento[0] = documento[0][7:]
documento[0] = re.sub('INICIO_LINEA_','INICIO_LINEA', documento[0])
archivo_noencontrados.write(''.join(documento))
finally:
fuente.close()
if not archivo_encontrados is None:
archivo_encontrados.close()
if not archivo_noencontrados is None:
archivo_noencontrados.close()
print ('final del proceso')
main()