elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1] 2 3 4 5
1  Programación / Scripting / [Python]Índice de la lista fuera de rango en: 15 Diciembre 2013, 19:59 pm
Buenas,
Estoy manejando bases de datos con el modulo sqlite3 y me salta un error en un trozo de código que al ejecutarlo linia por linia en la IDLE no ocurre es por eso que ando perdido.

Código
  1. t=0
  2. tdb=sqlite3.connect("TemporaryDB.db")
  3. tcur=tdb.cursor()
  4.  
  5. tcur.execute('''SELECT Fase FROM users''')
  6. tfetch0=tcur.fetchall()
  7. l_tfetch0=(tfetch0[t])
  8. tfase_data=(l_tfetch0[0])
  9. tfase_data=int(tfase_data)
  10.  
Si yo se que existen dos elementos en la tupla no entiendo como me indica que está fuera de rango. Al escribir fetchall() me devuelve una tupla, luego selecciono el elemento de la tupla (que es una lista) y posteriormente selecciono el elemento 0 de la lista ya que solo hay 1 elemento, aqui la aclaración:
Código
  1. >>>db=sqlite3.connect("TemporaryDB.db")
  2. >>> cur=db.cursor()
  3. >>> cur.execute("SELECT Fase FROM users")
  4. <sqlite3.Cursor object at 0x632ea0>
  5. >>> fetch=cur.fetchall()
  6. >>> fetch
  7. [(13,), (14,)]
  8. >>> fetch[1]
  9. (14,)
  10. >>> v=fetch[1]
  11. >>> v[0]
  12. 14
  13.  
Espero que me podáis ayudar un poco ;)
2  Programación / Scripting / [Python] Dilema con try en: 30 Septiembre 2013, 23:41 pm
Buenas!
Esta vez os planteo una questión en la que no paro de pensar y creo que de tanto pensar no consigo la solución. Es por eso que recurro a vosotros ;)

Código
  1. l=0
  2. for l in range(-1, 0):
  3. try:
  4. handle=open(var, "r")
  5. red=handle.read()
  6. handleold.close()
  7.                l=l+1
  8. asdf()
  9. except IOError:
  10. print("sdfghjkl")
Este script tiene como propósito intentar abrir un archivo y si lo ha podido abrir y leer que vaya a la función asdf() sino que haga un print().
El problema está en que nunca me salta un error puesto que lee todo lo que intenta. Cómo podría ir a la función "asdf()" solo si es cierto que el archivo existe?

Puede ser y seguramente será una solución muy absurda y sencilla, espero que me tenga una respuesta lo más temprano posible :)
3  Programación / Scripting / [Python]Subir archivos via FTP en: 11 Septiembre 2013, 23:15 pm
Buenas!
El caso es que no consigo subir un archivo via ftp con python y he buscado mucha información y todavía no encuentro solución :'(

Asi es como lo he echo en la consola

Código
  1. >>> import getpass
  2. >>> from ftplib import FTP
  3. >>> ftp=FTP("nonamewebsite.zxq.net")
  4. >>> getpass=getpass.getpass()
  5. Password:
  6. >>> ftp.login("nonamewebsite_zxq", getpass)
  7. '230-User nonamewebsite_zxq has group access to:  vhosts  \n230-OK. Current restricted directory is /\n230 0 Kbytes used (0%) - authorized: 6144000 Kb'
  8. >>> ftp.getwelcome()
  9. '220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------\n220-You are user number 45 of 500 allowed.\n220-Local time is now 21:02. Server port: 21.\n220-This is a private system - No anonymous login\n220-IPv6 connections are also welcome on this server.\n220 You will be disconnected after 2 minutes of inactivity.'
  10. >>> ftp.retrlines("LIST")
  11. drwxrwxrwx    2 876654   vhosts       4096 Sep 11 22:16 .
  12. drwxrwxrwx    2 876654   vhosts       4096 Sep 11 22:16 ..
  13. -rw-r--r--    1 876654   vhosts          6 Sep 11 22:16 .ftpquota
  14. -rw-r--r--    1 876654   vhosts        776 Sep 11 22:16 index.html
  15. '226-Options: -a -l \n226 4 matches total'
  16. >>> ftp.delete("index.html")
  17. '250-0 Kbytes used (0%) - authorized: 6144000 Kb\n250 Deleted index.html'
  18. >>> upload_file=open("/index.html", "r")
  19. >>> ftp.storbinary("STOR /index.html", upload_file)
  20. Traceback (most recent call last):
  21.  File "<stdin>", line 1, in <module>
  22.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 473, in storbinary
  23.    conn.sendall(buf)
  24. TypeError: 'str' does not support the buffer interface
  25. >>> files=ftp.dir()
  26. Traceback (most recent call last):
  27.  File "<stdin>", line 1, in <module>
  28.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 528, in dir
  29.    self.retrlines(cmd, func)
  30.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 439, in retrlines
  31.    with self.transfercmd(cmd) as conn, \
  32.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 379, in transfercmd
  33.    return self.ntransfercmd(cmd, rest)[0]
  34.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 337, in ntransfercmd
  35.    host, port = self.makepasv()
  36.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 315, in makepasv
  37.    host, port = parse227(self.sendcmd('PASV'))
  38.  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ftplib.py", line 836, in parse227
  39.    raise error_reply(resp)
  40. ftplib.error_reply: 200 TYPE is now ASCII'
  41.  

Como veis he eliminado el archivo antiguo "index.html" para intentar subir el nuevo y hay dos errores, al subir el archivo y al pedirle la lista de archivos al servidor.
Espero que alguien me de la sulución, gracias !

________
Edito
Me autorespondo ya que veo que nadie ha podido responder y después de mucho buscar he encontrado la solución.
El problema estaba en que no debia usar "storbinary" sino "retrbinary".
4  Programación / Desarrollo Web / Venta con paypal en: 27 Abril 2013, 11:12 am
Buenas!

Estoy en un proyecto en el que vendo un producto a través de paypal pero tengo dudas sobre como podría hacerlo. Lo posteo en desarrollo web ya que es el foro que me ha parecido más lógico.

Tengo unos archivos en un servidor y quiero que el usuario los obtenga al comprar, pero no se como entregar al usuario los archivos una vez que los haya comprado.
Paypal ofrece alguna facilidad?
5  Programación / Scripting / Re: [Python]Problema con sockets. en: 22 Julio 2012, 20:37 pm
He estado investigando un poco porque me parece interesante el tema, y veo que hacerlo sin threads es complicado, el problema es que la funcion socket.accept() bloquea la ejecucion en ese punto hasta que recibe una conexion, normalmente lo que se hace es que en el hilo de ejecucion principal tienes un bucle infinito haciendo accepts y abriendo un nuevo thread cuando llega una conexion, o tal vez se pueda hacer con solo 2 threads, uno para los accepts y otro gestionando las conexiones abiertas.

Ahora bien si quieres hacerlo con un unico hilo hay una solucion que es usar el modulo select, concretmente la funcion select.select(), que lo que hace es como observar un conjunto de datos y lanzar "eventos" cuando alguno de los datos es modificado: aqui hablan del tema http://stackoverflow.com/questions/5308080/python-socket-accept-nonblocking
y aqui tienes la documentacion http://docs.python.org/library/select.html#select.select

Si descubro algo mas ya te informo.

Saludos.
Muchas gracias, pero al probar el ejemplo de stackoverflow no entiendo por que me da error, no consigo entender por que. Te dejo el cliente y servidor y más abajo el problema :S.

Servidor
Código
  1. import socket, select
  2.  
  3. s=socket.socket()  
  4. s.bind(("localhost", 9999))  
  5. s.listen(3)  
  6. input=[s]
  7. print("0")
  8. while True:
  9. inp, out, exc=select.select(input,[] ,[])
  10. for x in inp:
  11. if x is s:
  12. print("1")
  13. c, addr=s.accept()
  14. input.append(c)
  15. else:
  16. data=s.recv(1024)
  17. if data:
  18. dc=bytes.decode(data)
  19. print(s.getpeername(), " -  ", dc)
  20. x.send(data)
  21. else:
  22. s.close()
Cliente
Código
  1. import socket
  2. s=socket.socket()
  3. try:
  4. s.connect(("localhost", 9999))
  5. except socket.error:
  6. print("Socket error")
  7.  
  8. while True:
  9. data=input(" >>  ")
  10. encode=str.encode(data)
  11. if data=="quit":
  12. s.close()
  13. quit()
  14. print("bye")
  15. elif data=="get*":
  16. inp=s.recv(1024)
  17. dc=bytes.decode(inp)
  18. print(dc)
  19. else:
  20. s.send(encode)

Bueno resulta que al enviar alguna cosa desde el cliente, el servidor salta diciendo que no hay un socket establezido, que no esta conectado. He comprobado, como puedes ver en el script del servidor, que el programa pasa por aceptar la conexion asi que no entiendo el problema. Espero que alguien pueda ayudar, gracias.
6  Programación / Scripting / Re: [Python]Problema con sockets en: 17 Julio 2012, 20:08 pm
¿Podrias poner el codigo que has hecho del cliente y servidor para poder ayudarte mejor?

A nivel abstracto creo que lo que quieres hacer se haria del siguiente modo:

- El servidor tiene un socket escuchando conexiones entrantes
- El servidor ejecuta un bucle, a cada iteracion:
- Mira si le entra una conexion por el socket a la escucha.
- Cuando le llega una conexion de un cliente crea un nuevo socket unico para ese cliente y lo añade a una lista de clientes.
- Recorre la lista de clientes a ver si alguno ha enviado algo.
- Si ha enviado algo le manda el mensaje recibido a los demas clientes de la lista.

Esto es con un solo hilo como has pedido, si lo haces con threads en vez de una lista sockets para cada cliente/conexion tendrias un hilo para cada cliente/conexion.

Aqui tienes el codigo, he echo más pero el unico que me ha funcionado es el mas simple.
Código
  1. #Cliente
  2. import socket
  3. s=socket.socket()
  4. try:
  5. s.connect(("localhost", 9999))
  6. except socket.error:
  7. print("Socket error")
  8.  
  9. while True:
  10. inp=input(" >>  ")
  11. encode=str.encode(inp)
  12. if inp=="quit":
  13. s.close()
  14. quit()
  15. print("bye")
  16. else:
  17. s.send(encode)
Código
  1. #Servidor
  2. import socket  
  3.  
  4. s=socket.socket()  
  5. s.bind(("localhost", 9999))  
  6. s.listen(3)  
  7. print("Waiting...")
  8. sc, addr=s.accept()  
  9. print("Socket established")    
  10. while True:
  11. r=sc.recv(1024)
  12. dc=bytes.decode(r)
  13. print(" -  ", dc)
  14. if r=="quit":
  15. sc.close()
  16. s.close()
  17. quit()
Me has entendido a la perfección, gracias.
7  Foros Generales / Noticias / Re: No lo queremos gratis: lo queremos fácil en: 17 Julio 2012, 00:51 am
No comparto tu opinión. Es cierto que lo facil es muy atractivo pero si lo puedo conseguir gratis con un poco de esfuerzo no pienso pagar. Al menos en mi caso, y con los tiempos que corren, mi lema es; no pagaré mientras lo pueda conseguir gratis. Creo que no soy el unico con estos ideales, por lo tanto porfavor, no generalizes.
Citar
Queremos que sea facil
Y perdon por los signos de accentuacion y sobretodo, las comas, no se me da bien escribir desde el mobil.
8  Programación / Scripting / [Sin resolver]-[Python]Problema con sockets en: 10 Julio 2012, 19:08 pm
 Bueno, empezé a conocer los sockets y lo primero que intenté hacer fue un socket cliente servidor en el que el cliente enviara strings y el servidor las pintara. Me costó lo suyo ya que parece que sino todos, la mayoria de la gente en internet usa python 2.7, y se ve que a partir de la 3.0 hay que passar strings a bytes para poder enviarlo puesto que no se pueden mezclar bytes y strings.

Despues de esto pense en hacer un chat ya que estaba jugando con strings y sockets...Bueno pues como siempre debe haber cliente y servidor, apliqué los pocos conceptos que tengo y hice 2 scripts que fueran cliente y servidor a la vez para asi establecer 2 sockets y hacer el chat. Pero como un programa no puede ser cliente y servidor a la vez planteo esta situación:

Con una estructura de 1 servidor y muchos clientes, los clientes envian bytes al servidor y el servidor envia estos bytes a un cliente. Como, usando python y solo con el modulo socket, puedo hacer esto?
En caso de que la estructura que he planteado no sea como deberia ser corrijanme porfavor.

He leido que la gente usa threads pero quiero hacerlo solo con el modulo socket...

Gracias
9  Programación / Scripting / Re: Aconsejarme en: 9 Junio 2012, 13:06 pm
Buenas, batch solo funciona en windows asi que util...

Veo que tienes curiosidad por a prender a programar, pero estaría bien que puedieras programar en un lenguage que sirviera para más sistemas operativos, no solo windows. Podrias empezar con Perl, Python o Pascal, ya que són bastante sencillos e intuitivos.

Yo, personalmente, te recomiendo Python, ya que opera a bajo nivel y es muy sencillo.
Si te decides a arrancar con python, te dejo este blog donde acabo de subir un buen manual sobre python y tienes algunos códigos para orientarte.

pysources.wordpress.com
10  Programación / Scripting / Re: [Python]Saber los archivos que hay en una carpeta en: 9 Junio 2012, 00:40 am
Buenas,

Código
  1. import os
  2.  
  3. # En 'ficheros' se guarda una lista con todos los elementos del directorio
  4.  
  5. ficheros = os.listdir(r'C:\Python27')
  6.  
  7. # Recorremos la lista
  8. # Eliminamos todo lo que NO sea un archivo
  9.  
  10. for i in ficheros:
  11.  if not os.path.isfile(i):
  12.    ficheros.remove(i)

Eso te devuelve una lista con todos los archivos de una carpeta.

Un saludo.

Buenas, no consigo entender porque el script me pinta los archvos repetidas veces. Espero que me puedan ayudar :S

Código
  1. l=[]
  2. n=0
  3. def vi():
  4. n=0
  5. while n<len(l):
  6. print(n, "-", l[n])
  7. n=n+1
  8.  
  9. ficheros=os.listdir("/Users/Arnau/desktop")
  10.  
  11.  
  12. for i in ficheros:
  13. if not os.path.isfile(i):
  14. ficheros.remove(i)
  15. l.append(i)
  16. vi()

Creo que es porque los elementos se añaden a la lista repetidas veces pero no entiendo porque se añaden mas de una vez...
Páginas: [1] 2 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines