Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Arnau27 en 30 Abril 2012, 23:44 pm



Título: [Python] Error leer archivo
Publicado por: Arnau27 en 30 Abril 2012, 23:44 pm
Esta es la parte del script donde tengo problemas, lo que quiero esque esta parte del codigo solo se ejecute la primera vez que se ejecute el script. Pense que necesitaria una variable i en funcion de si esta es 0 o 1 se ejecutara esa parte del codigo o no. Como con una variable en el script siempre seria igual a 0 (ejemplo: e=0 , while e<1,e=e+1, *cerramos scipt, volvemos a abrirlo, e vuelve a ser = 0) se me ocurrio que ya que estaba jugando con los archivos txt en este script pues podria incluir la variable en un archiv txt. Pero mi problema viene al intentar leer lo que he escrito, no entiendo porque > UnsupportedOperation: not readable .
Xk no lo puedo leer?

Aclaro: Por si un caso aclaro que cuando abrimos un archivo con "w" para que sea escrito tiene que ser nuevo, es decir que si ya existe no se podra escribir. Para poder escribir en un archivo que ya existe utilizamos a.
Código
  1. st=0
  2. xt=open("num.txt", "w")
  3. stt=str(st)
  4. xt.write(stt)
  5.  
  6. f=xt.read()
  7. lf=int(f)
  8.  
  9. while lf<1:
  10. startpass=input("To get started you must write a password. ")
  11. sure=input("Are you sure?")
  12. if sure==no:
  13. print("Ok")
  14. elif sure==yes:
  15. tx=open("pass.txt", "a")
  16. tx.write(startpass)
  17. os.remove("num.txt")
  18. xt=open("num.txt", "w")
  19. xt.write("1")
  20. print("Enjoy using SF ;)")
  21. break
  22. else:
  23. pritn("Please write yes or no.")
_
Ademas de intentar solucionar este problema de lectura de archivos (que no entiendo ya que en una de las funciones que uso en el script lo puedo leer :S) espero que me aconsejen sobre otras formas de hacerlo que no sea la de 0 i 1 en un archivo txt.

Gracias.



Elektro H@cker: Usa el botón "Insertar código"


Título: Re: [Python] Error leer archivo
Publicado por: mael0c en 1 Mayo 2012, 00:48 am
Hola!
Al abrir el fichero en modo escritura no te deja leerlo. Tienes que cerrarlo y después volver a abrirlo en modo lectura.


Título: Re: [Python] Error leer archivo
Publicado por: 0x5d en 1 Mayo 2012, 08:19 am
Hola, buen día !

Recuerda es no es una buena práctica abrir archivos (open()) y no usar close()
Otra cosa que me llama la atención de tu código es esto:
Código
  1. sure=input("Are you sure?")
  2. if sure==no:
  3. print("Ok")
  4. elif sure==yes:
Que versión de Python usas ? , pues en la 2.7 que es una de las más usadas eso daría error... Pero por tu forma de usar el print, debes usar Python 3.X
Pues :
input = para valores numéricos
raw_input = para valores alfanuméricos

Y pues cuando realizas la comparación , la condición igual está errada, pues como indicaba anteriormente... input no es comparable con un texto, y pues al no usar comillas en tu condición, el código entenderá que "no" es una variable y no un string, lo mismo con el "yes".

Bueno ese sería mi aporte :P

Saludos, Javier.


Título: Re: [Python] Error leer archivo
Publicado por: Arnau27 en 1 Mayo 2012, 10:03 am
Que versión de Python usas ? , pues en la 2.7 que es una de las más usadas eso daría error... Pero por tu forma de usar el print, debes usar Python 3.X
Pues :
input = para valores numéricos
raw_input = para valores alfanuméricos

Y pues cuando realizas la comparación , la condición igual está errada, pues como indicaba anteriormente... input no es comparable con un texto, y pues al no usar comillas en tu condición, el código entenderá que "no" es una variable y no un string, lo mismo con el "yes".

Bueno ese sería mi aporte :P

Saludos, Javier.

Gracias por tu aporte, efectivamente uso python 3.2. Pero lo que me comentas de raw_input cuando lanzaron la version 3.0, raw_input dejo de existir para convertirse solo en input que hace la funcion de los 2.
Compruebalo aqui: http://docs.python.org/dev/py3k/whatsnew/3.0.html (http://docs.python.org/dev/py3k/whatsnew/3.0.html)

Alguien sabe alguna solucion diferente a lo que pido?

Edito: Consegui solucionar el problema :) gracias igualmente por todos los aportes. Asi es como quedó.

Código
  1. def tri():
  2. global xt
  3. try:
  4. xt=open("reg.txt","r")
  5. tt=xt.read()
  6. xt.close()
  7. return
  8. except IOError:
  9. xt=open("reg.txt","a")
  10. xt.write("registered")
  11. xt.close()
  12. getstarted()
  13.  
  14. while i:
  15. tri()
  16. break
  17.  


Título: Re: [Python] Error leer archivo
Publicado por: 0x5d en 1 Mayo 2012, 11:39 am
:P Si sé que en Py 3.X cambia el input y raw_input() solo quería saber tu versión de Python para saber si estabas usando bien el input o no :P