« first day (1306 days earlier)      last day (1802 days later) » 

9:02 PM
Cual funcion jajajaja
import telnetlib

def espera_prompt():
return tn.read_until("\n>")

HOST = "111.1.112.125"
CRED = "juan soporte"

tn = telnetlib.Telnet(HOST)

espera_prompt()
tn.write(CRED + "\r\n")

numeros = ['012345678954']

emergencia = ['130','131','132','133','134','135','136','137','138','139','1400','1402','1403','1404','1405','1406','1407',
'1408', '1409','1411','1412','1413','1414','1415','1416','1418','1419','1420','1421','1424','1451','143','147',
'149']

mi_path = "fichero.txt"

with open(mi_path, 'a+') as f:
 
y alo hice
pero no me funcionaría ya que usa telnet
lo que estaba en amarillo era lo que necesitabas cirto?
 
Si todos los posibles registros que se me muestran y claro agregarle el numero del cual pertenece ese respuesta
 
@L.Ronquillo jajajajaja paisa jajajaja :v
@L.Ronquillo como vas bro!
 
@JuanPerez He escrito un programita que procesa el texto que has pegado, y produce como resultado esto:
00 Tratamiento: GNCT
   VIN21T7BVINA032 137
   MOVI1L7BVINA032 137
01 Tratamiento: GNCT
   VIN21T7BVINA032 138
   ENTE1P7BVINA032 326823229768613
   VIN21T7BVINA032 326823229768613
02 Tratamiento: GNCT
   VIN21T7BVINA032 139
   EPHO1L7BVINA032 326322323132292
   VIN21T7BVINA032 326322323132292
03 Tratamiento: VACT
04 Tratamiento: VACT
05 Tratamiento: VACT
06 Tratamiento: GNCT
   MOVI1L7BVINA032 1404
07 Tratamiento: VACT
08 Tratamiento: VACT
09 Tratamiento: GNCT
   MOVI1L7BVINA032 1407
10 Tratamiento: VACT
¿Algo así te valdría?
 
@BenderPaisa ando peleando contra el sueño! jajajaja, me ando durmiendo a unas horas de salir del trabajo
y tú que tal?:D
 
9:08 PM
@L.Ronquillo pues ya somos dos bro y aún me quedan dos horas jejejeje
@L.Ronquillo yo bien, trabajando mucho
vine por acá por que recibí la notificación de tu invocación jejejeje
 
@abulafia Si bro, algo asi solo veo que faltaria el numero telefonico de esa respuesta
 
Pero el número telefónico no está en el txt que pegaste (o sea en la respuesta del telnet)
 
No no esta en el txt pero en el comando
No se le podria agregar ?
Porque asi de esa manera se puede ver a que numero pertenece cada respuesta
 
Claro, pero eso ya es mucho más sencillo, no? A fin de cuentas lo tienes en una variable de tu programa, no necesitas andar parseando la respuesta del telnet
 
Ah claro eso si
 
9:11 PM
Pues mira, este es mi código:
import re

trozos = respuesta.split(">")
contador = 0
for trozo in trozos:
    tratamiento = re.findall("TREATMENT IS: ([A-Z]+)", trozo)
    if tratamiento:
      print "%02d Tratamiento: %s" % (contador, tratamiento[0])
    datos = re.findall("^\\d +[A-Z0-9]+ +\\d+ +ST +$", trozo, re.M)
    if datos:
      for d in datos:
        partes = d.split()
        print "  ", partes[1], partes[2]
    contador += 1
En mi caso, en la variable respuesta puse exactamente el contenido del texto que subiste. En tu caso supongo que sería la respuesta del telnet, si es realmente igual a lo que subiste
 
Si copie y pegue lo que me devuelve la respuesta
 
como ves, primero divido toda la respuesta en "trozos" siendo el divisor el ">". Después proceso cada trozo en un bucle usando expresiones regulares. Una para encontrar el tratamiento y otra para encontrar los datos que siguen el patrón que antes hablamos
 
@BenderPaisa coloco a @BenderPaisa en modo de ataque y acabo mi turno(? jajajaja
 
el tratamiento queda en la variable tratamiento
 
9:13 PM
estoy sin pendientes por el momento, pero pues ni modo que me duerma en la oficina
 
mejor voy aprender aleman
 
y las líneas que encajan en el patrón deseado quedan en la lista datos
 
para colmo, toda la net está con firewall, no yt ni algo de ocio, ni si quiera udemy
 
hermoso :$
voy a tratar de implementarlo
hermano
 
después itero sobre la lista datos.. Dada elemento será una línea que ha encajado en el patrón. Sólo queda dividirla por los espacios (que es lo que hace d.split()) para quedarse con las sub-cadenas 1 y 2, que serían la cadena y el número, respectivamente
luego lo imprimo por pantalla, pero en tu caso tú verás qué haces con ello :-)
El contador seguramente no te haga falta. Lo usé sólo para ir numerando las respuestas al imprimirlas
 
9:15 PM
import re es importante colocar esto ?
 
espero que te funcione en pyton 2.4 Traté de evitar características "modernas"
 
@abulafia como trabajas con python
 
eso es fundamental, debes colocarlo al principio de tu programa
 
Si tengo la version 2.7
Vale
 
@JuanPerez Es la librería de expresiones regulares
@JuanPerez ¿No tenías el otro día 2.4?
@SebastiánLagosYañez Depende, para experimentos rápidos como este suelo usar Google Colab
 
9:16 PM
respuesta = espera_prompt()

trozos = respuesta.split(">")

En mi caso tendria que solo pasarle la variable respuesta sin el split ?
 
Para proyectos más largos edito con VS Code
 
@abulafia estoy probando desde otra maquina
 
@JuanPerez Se supone que respuesta es un montón de texto con retornos de carro y de todo, exactamente lo que subiste al pastebin
lo de respuesta.split(">") es para dividirlo por trozos en cada prompt
yo no sé si tu respuesta es un solo trozo (en cuyo caso no necesitas el split) o es todo junto
 
@L.Ronquillo jajajajajajajaja waaaaaa jajajaja
 
@abulafia La respuesta es tal cual como la copie
 
9:19 PM
Entonces sí necesitas el split
para dividirlo en varios trozos, siendo cada trozo lo que hay entre dos >
 
Ahhh
Vlae
Lo voy a probar
@abulafia Solo me muestra eso
 
Parece que no va del todo bien. Por un lado el contador siempre vale 0, pero eso es normal, porque lo pones a 0 en cada iteración. Pon lo de contador=0 fuera de los bucles (por ejemplo, antes del with)
pero por otro lado no parece encontrarte las líneas del patrón
 
Lo saque del for y me imprime lo mismo
 
También veo que respuesta es en realidad un solo trozo. Tú veías muchos juntos porque lo que veías era el resultado de ejecutar varias veces el bucle
@JuanPerez Lo mismo no, ahora debería ir incrementando el contador al menos
 
9:27 PM
 
Ah, si, ya lo veo. contador+=1 está indentado y sólo se ejecuta si se encuentran datos. Como no se encuentran, no se incrementa nunca
 
@abulafia Osea, es un solo registro por comando
 
@JuanPerez Que intentas hacer que hace rato veo que envías screen :D
 
contador+= debería estar a la misma altura (indentación) que if tratamiento
 
9:30 PM
contador += 1 lo coloco a la altura del if tratamiento ?
 
Sí, para que el contador se incremente por cada registro procesado, tanto si encontró datos como si no
 
Ahora si esta incrementando el contador
01 Tratamiento: GNCT
03 Tratamiento: GNCT
05 Tratamiento: GNCT
07 Tratamiento: GNCT
 
@JuanPerez XDDD
 
De dos en dos?
 
9:32 PM
También tienes mal indentado lo de la extracción de datos
lo tienes metido de forma que sólo se hace si if tratamiento
Era así
for trozo in trozos:
    tratamiento = re.findall("TREATMENT IS: ([A-Z]+)", trozo)
    if tratamiento:
      print "%02d Tratamiento: %s" % (contador, tratamiento[0])
    datos = re.findall("^\\d +[A-Z0-9]+ +\\d+ +ST +$", trozo, re.M)
    for d in datos:
      partes = d.split()
      print "  ", partes[1], partes[2]
    contador += 1
 
ánimo @JuanPerez, falta poco. Recuerda, la identación en Python es como una azotea sin barandas. XD
 
@MauricioContreras vos te das cuenta que usar un lenguaje que se maneja por identacion es atrasar 50 años?
o sea.. cobol y asm de las viejas pc funcionaban por identacion...
 
(no voy entrar al trapo, no voy a entrar al trapo, no voy a entrar al trapo...)
 
@abulafia entra.. no hay forma de que la ganes
:p
 
yesterday, by Aritzbn
user image
 
9:34 PM
@gbianchi Mas o menos a la época de las tarjetas perforadas. Un agujero mal puesto y a reservar tiempo de uso para otro día.
 
@abulafia Igual se va a mantener el contador += 1 dentro del for ?
 
@MauricioContreras seee totalmente...
 
@JuanPerez Como en el código que te acabo de pegar
 
@abulafia aajajajaja
 
@gbianchi from __future__ import braces
 
9:37 PM
 
XD
cada vez menos palabras ajaja
 
Sigue estando todo mal indentado
la indentación en python delimita donde empieza y acaba cada bloque
 
ponele llaves mi dios
 
:@ ah ya entendi
lol
 
faltan llaves, protesta el compilador, te das cuenta...
 
9:39 PM
por tanto, tal como lo tienes, todo lo que va de la línea 40 a 48 se ejecuta sólo si if tratamiento es cierto
 
@gbianchi Pero si eso es ponerle rueditas a la bici, déjalo que se desmadre para que aprenda. XDDD
 
@MauricioContreras no es necesario desmadrarse.. es ser ordenado.. nada que ver con las rueditas en la bici.. eso es linq.. jajajaja
 
Y sigue estando mal. Lo único que debe ejecutarse if tratamiento: es la línea siguiente con el print del tratamiento. El resto debes desindentarlo
 
9:43 PM
@abulafia Anda, pero que bella cortina para el código, si parece bordado de punto.
 
@JuanPerez Y por favor, deja de pegar imágenes y pega código (o pastebins) que si no no puedo corregirtelo!
 
pregunta.. no es mas facil pegar el codigo, que hacer un upload de una imagen que tuviste que marcar, guardar en un archivo, y despues hacer upload?
 
@gbianchi No me complica de ninguna de las 2 maneras
 
A mi la imagen sí me complica :-)
 
9:49 PM
Ah ah ya entiendo
 
Así te tiene que quedar
 
8
A: Un fragmento de código vale más que mil imágenes... ¿cómo sensibilizar a los usuarios de ese principio?

gbianchiCuando haces preguntas o cuando las contestas, por favor no uses capturas de pantalla del texto. Esto es una mala idea porque: No se puede copiar tu codigo en las respuestas, busquedas de google, en una solución para comprobarlo o donde sea. No salen en las busquedas La publicación es mas pesad...

 
Asegúrate de tener la indentación exactamente igual
ten cuidado no sea que tu editor, al copiar y pegar, añada indentación extra
 
igual sigue imprimiendo de 2 en 2
00 Tratamiento: GNCT
02 Tratamiento: GNCT
04 Tratamiento: GNCT
06 Tratamiento: GNCT
 
Bueno, se ve que entonces las líneas que contienen los datos que buscamos no encajan con el patrón regular
lo más probable es entonces que en vez de espacios tengan tabulaciones
 
9:53 PM
@abulafia Unix ?
 
No, la respuesta del telnet
quizás en la respuesta del telnet vienen tabuladores
 
una máquina el señor @gbianchi
 
pero cuando pegaste el contenido del fichero en el pastebin éste lo cambió a espacios
prueba a cambiar la línea con la expresión regular por esta otra
    datos = re.findall("^\\d\\s+[A-Z0-9]+\\s+\\d+\\s+ST\\s+$", trozo, re.M)
He cambiado donde la expresión regular tenía espacios por \\s, que es un carácter especial que significa "cualquier blanco, ya sea espacio o tabulador u otros"
 
ahora si mostro
 
Ajá, pues ya me puedo ir a cenar y a dormir, que se me está haciendo tardísimo
chao!
 
9:58 PM
gracias bro
te debo 2
 
10:40 PM
hasta mañana estimados!!
 
11:12 PM
hola
 
necesito un respiro
 
@AlvaroMontoro ¿Qué pasó?
 
nada... ha sido un día largo
y me están entrando ganas de dar -1 a cada publicación que veo
 
@AlvaroMontoro kira mode on
 
11:26 PM
lo cual seguramente es una buena señal para parar y dejar de votar y comentar
 
eliminar, eliminar, eliminar, eliminar
 
así que vengo al chat a ver que se cuece
 
11:47 PM
@AlvaroMontoro podemos cocer habas
 
@AlvaroMontoro a esta hora por aqui donde yo estoy están más que dormidos
 

« first day (1306 days earlier)      last day (1802 days later) »