Autor
|
Tema: [Ayuda] Python - SyntaxError: invalid syntax (Leído 4,984 veces)
|
W17CH3R
Desconectado
Mensajes: 100
|
Hola a todos, la verdad llevo ya bastantes días quebrandome la cabeza, con un error que tengo en una línea de código en Python, cuando voy a ejecutar el código me manda el siguiente error en la línea 26: File "scan_port.py", line 26 except hostname.error: ^ SyntaxError: invalid syntax
Probado con poner # al lado del comentario para ver si solo era ese error, y la verdad que no entiendo cual es el origen, porque me sigue diciendo que hay un error en la sinstasis. Aquí pongo el codigo donde me indica donde esta el error (la verdad no le veo donde esta el error..) except hostname.error: print ("No puede resolver el hostname") sys.exit()
Aquí les dejo el código completo del programa, para saber si pase algo por alto, porque no le encontre ningún error # ------------------------------------------------------------------------------------------------- # ESCANER DE PUERTOS # ------------------------------------------------------------------------------------------------- import nmap import socket import datetime import sys import os now = datetime.datetime.now() netmap = nmap.pScan.log() remoteServer = input('Enter host:\n') try: remoteServerIP = socket.gethostbyname(remoteServer) portRange = input('Escribe el rango del puerto usando - como separador:\n') print ('-' * 60) print ('Por favor espere, escaneando host remoto', remoteServerIP) print ('-' * 60) t1 = datetime.datetime.now() netmap.scan(remoteServerIP, portRange) except KeyboardInterrupt: print ("Mantenga pulsado Ctrl+C") sys.exit() except hostname.error: print ("No puede resolver el hostname") sys.exit() except socket.error: print ("No puede conectarse al servidor") sys.exit() with open ("pScan.log", "a") as out: for host in netmap.all_hosts(): print ('Host : ' + host + '(' + netmap[host].hostname() + ')') out.write('Host : ' + host + '(' + netmap[host].hostname() + ')\n') print ('State : %s' % netmap[host].state()) out.write('State : %s' % netmap[host].state()+"\n") for proto in netmap[host].all_protocols(): print ('----------') out.write('----------\n') print ('Protocol : %s' % proto) out.write('Protocol : %s' % proto+"\n") lport = sorted(netmap[host][proto]) for port in lport: print ('Port : %s\nState : %s' % (port, netmap[host][proto][port]['state'])) out.write('Port : ' + str(port) + '\nState : ' + str(netmap[host][proto][port]['state'])+"\n") print ('Name : '+netmap[host][proto][port]['name']) out.write('Name : '+netmap[host][proto][port]['name']+"\n") temp2 = str(now.year) + "/" + str(now.month) + "/" + str(now.day) + " " + str(now.hour) + ":" + str(now.minute) + ":" + str(now.second) print ("Date : " + temp2 + "\n\n") out.write("Date : " + temp2 + "\n\n") t2 = datetime.datetime.now() total = t2 - t1 print ("Escaner es completado en ", str(total)) out.write("\nEscaner es completado en "+ str(total)+"\n") print ('\n\nCSV:\n'+netmap.csv()) out.write('\n\nCSV:\n'+netmap.csv()+"\n")
No entiendo que habré hecho mal, la verdad hace tiempo que no escribo en python, y no se que hacer ya para solucionarlo, porque aun añadiendo un comentario al lado del código me salta el mismo error pero en la línea 30
|
|
« Última modificación: 1 Agosto 2021, 12:31 pm por W17CH3R »
|
En línea
|
La importancia de los Datos es la importancia de los Recuerdos.
|
|
|
fzp
Desconectado
Mensajes: 130
|
Perdón si escribo alguna burrada/obviedad, Python sólo he visto algo muy por encima. Pero bueno, si es el caso, con pasar de mi comentario, ya no hay problema. En la sintaxis de Python ¿detrás de "except" se admiten expresiones que incluyan un punto? except hostname.error:
Este tipo de código ¿no suele escribirse así? except HostnameError:
En la línea 30 vuelve a haber lo mismo, un "except" con una expresión con punto ".". En cambio, en la 22 no (except KeyboardInterrupt: - no hay punto). Al ser Python interpretado, en el primer caso no llega a la línea 30. Cuando pones el primer error como comentario, te salta el error en el segundo. Ya digo, es sólo una idea. Perdón si he hecho perder el tiempo a alguien. Como lleva ya rato sin contestación he querido echar una mano, pero igual he puesto una incoveniencia.
|
|
|
En línea
|
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Hola, no se que versión de Python estás usando pero te voy a redirigir a aqui (Python 3.8) Entonces, el problema que le veo a tu codigo es con las lineas: sys.exit()
Que estan fuera de la ejecución del bloque del except
Esto: except hostname.error: print ("No puede resolver el hostname") sys.exit()
Debiera ser así: except hostname.error: print ("No puede resolver el hostname") sys.exit()
Ejemplo: import sys try: a = 0 b = 1/0 except ZeroDivisionError: print("DIVISION") sys.exit() except Exception: print("EXCEPTION")
NOTA: Este código no tiene ningun sentido, solo para demostrar el punto. Salu2s, espero te ayude
|
|
|
En línea
|
|
|
|
W17CH3R
Desconectado
Mensajes: 100
|
En la línea 30 vuelve a haber lo mismo, un "except" con una expresión con punto ".". En cambio, en la 22 no (except KeyboardInterrupt: - no hay punto). Al ser Python interpretado, en el primer caso no llega a la línea 30. Cuando pones el primer error como comentario, te salta el error en el segundo.
Ya digo, es sólo una idea. Perdón si he hecho perder el tiempo a alguien. Como lleva ya rato sin contestación he querido echar una mano, pero igual he puesto una incoveniencia.
Aun quitando el punto y dejando solamente hostname sige dandome el error, ni idea que será
Gracias, le echaré un vistazo, lo tendré más en cuenta usar function
Hola, no se que versión de Python estás usando pero te voy a redirigir a aqui (Python 3.8) Entonces, el problema que le veo a tu codigo es con las lineas: sys.exit()
Que estan fuera de la ejecución del bloque del except
Esto: Debiera ser así: except hostname.error: print ("No puede resolver el hostname") sys.exit()
Ejemplo: import sys try: a = 0 b = 1/0 except ZeroDivisionError: print("DIVISION") sys.exit() except Exception: print("EXCEPTION")
NOTA: Este código no tiene ningun sentido, solo para demostrar el punto. Salu2s, espero te ayude Muchas gracias!!! eres un genio!!! bueno ya no me dio más el error en la sintaxis pero tendré muy en cuenta en donde cometí mi error de poner código fuera de la ejecución del bloque, aunque me esta dando ahora trabas con la línea 10, que no le veo sentido cuando antes no me dio ningún error, y al soluciónar el posicionamiento del sys.exit() fue cuando me dio el siguiente mensaje en el terminal... línea 10: `now = datetime.datetime.now()'
Me has ayudado un monton con Aun me queda mucho por aprender de Python, y se que si logrará mejorar podría lograr programar muy buenas herramientas, acabo de mirar ahora mismo para ver que versión de Python tengo y es la versión 2.7.17, me recomiendas cambiarme a la versión 3??
|
|
|
En línea
|
La importancia de los Datos es la importancia de los Recuerdos.
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
De nada! ¿Cuál es el error que te da en la linea 10? now = datetime.datetime.now()
me recomiendas cambiarme a la versión 3?? Realmente, creo que sería una buena idea. Python 2 todavía es utilizado en algunos contextos porque existen librerias que todavía no tienen soporte en Python 3, pero poco a poco todas se han ido portando a la versión 3. Esta versión del lenguaje sigue siendo mantenida y cada cierto tiempo aparecen nuevas versiones con mejoras y nuevas características.
|
|
|
En línea
|
|
|
|
W17CH3R
Desconectado
Mensajes: 100
|
De nada! ¿Cuál es el error que te da en la linea 10?
Literalmente lo que ves en la captura cuando lo ejecuto. now = datetime.datetime.now()
y sí es en esa misma línea de código donde me da el siguiente error. Realmente, creo que sería una buena idea. Python 2 todavía es utilizado en algunos contextos porque existen librerias que todavía no tienen soporte en Python 3, pero poco a poco todas se han ido portando a la versión 3. Esta versión del lenguaje sigue siendo mantenida y cada cierto tiempo aparecen nuevas versiones con mejoras y nuevas características.
Entonces también la versión 3 es mucho más estable que la 2?? aunque no se si puedo actualizar python directamente a la versión 3, o tener que desinstalarlo y volverlo a instalar pero como python3.
|
|
|
En línea
|
La importancia de los Datos es la importancia de los Recuerdos.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
SQL Express 2005 syntax error... AYUDA!
« 1 2 »
Bases de Datos
|
TwisteD420
|
10
|
7,868
|
15 Junio 2011, 03:41 am
por TwisteD420
|
|
|
Python: Syntax error en "def" o_o
Scripting
|
S3kh
|
1
|
3,237
|
14 Agosto 2011, 01:02 am
por criskapunk
|
|
|
[Ayuda] SQL syntax error
PHP
|
K4sS-
|
1
|
1,952
|
26 Agosto 2012, 00:47 am
por alexander1712
|
|
|
invalid input syntax
Programación C/C++
|
m@o_614
|
0
|
1,630
|
4 Mayo 2013, 18:25 pm
por m@o_614
|
|
|
[PYTHON] Error: invalid syntax
Scripting
|
jalbtercero
|
2
|
3,463
|
31 Enero 2015, 20:15 pm
por tincopasan
|
|