Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Arnau27 en 4 Enero 2012, 16:25 pm



Título: Problema escribiendo un archivo en Python
Publicado por: Arnau27 en 4 Enero 2012, 16:25 pm
Muy buenas, creo que el problema que tengo con el script es una tonteria aunque no consigo solucionarlo. :-[


import datetime
Y=(input('Escribe alguna cosa'))
txt=open(logfile, "w").write(datetime.datetime.now().ctime())
logfile.write(Y)

El script crea el archivo y escribe la fecha pero al introducir la variable Y me daAttributeError 'str' object has no atribute 'write'

Espero una solucion, gracias


Título: Re: Problema escribiendo un archivo en Python
Publicado por: $Edu$ en 4 Enero 2012, 16:51 pm
No se nada de python y no comprendo mucho el codigo, pero hablas de problemas de atributos, que archivo estas queriendo escribir? fijate si tiene los atributos de Solo Lectura activado, tendras que sacarlo.


Título: Re: Problema escribiendo un archivo en Python
Publicado por: adastra en 4 Enero 2012, 17:30 pm
El file descriptor no es "logfile", ese es el contenido del fichero (texto) el fichero propiamente dicho es el que te retona la llamada a la función "open()" ese es el problema, estas usando la variable equivocada.


Título: Re: Problema escribiendo un archivo en Python
Publicado por: Trenico en 4 Enero 2012, 23:25 pm
Cambia el:

Código
  1. logfile.write(Y)

Por:

Código
  1. txt.write(Y)


Título: Re: Problema escribiendo un archivo en Python
Publicado por: Arnau27 en 5 Enero 2012, 20:55 pm
Cambia el:

Código
  1. logfile.write(Y)

Por:

Código
  1. txt.write(Y)

Me sigue dando el mismo error no lo entiendo...


Título: Re: Problema escribiendo un archivo en Python
Publicado por: $Edu$ en 5 Enero 2012, 21:03 pm
Leiste lo que te comente yo?


Título: Re: Problema escribiendo un archivo en Python
Publicado por: Jirp96 en 6 Enero 2012, 14:55 pm
Hola!
Creo que el problema es por como abres el archivo y escribes a la vez, por lo que la variable "que lo contiene"(en tu caso, txt) no tiene nada en su interior.
Código
  1. txt=open(logfile, "w").write(datetime.datetime.now().ctime())
  2.  

Mira esto....
Código
  1. >>> x = open("lala", "w").write("hola")
  2. >>> x
  3. >>> x.write("alal")
  4. Traceback (most recent call last):
  5.  File "<pyshell#7>", line 1, in <module>
  6.    x.write("alal")
  7. AttributeError: 'NoneType' object has no attribute 'write'
  8.  
  9. >>> dir()
  10. ['__builtins__', '__doc__', '__name__', '__package__', 'x']
  11. >>> print x
  12. None
  13.  

Creo que si lo dejas asi deberia bastar.
Código
  1. import datetime
  2. Y=(input('Escribe alguna cosa'))
  3. txt=open(logfile, "w")
  4. txt.write(datetime.datetime.now().ctime())
  5. txt.write(Y)

Por cierto, logfile es una variable que contiene el nombre del archivo a abrir, o es una cadena?(si es asi, faltan las comillas?)
Saludos!


Título: Re: Problema escribiendo un archivo en Python
Publicado por: Arnau27 en 8 Enero 2012, 12:46 pm
Hola!
Creo que el problema es por como abres el archivo y escribes a la vez, por lo que la variable "que lo contiene"(en tu caso, txt) no tiene nada en su interior.
Código
  1. txt=open(logfile, "w").write(datetime.datetime.now().ctime())
  2.  

Mira esto....
Código
  1. >>> x = open("lala", "w").write("hola")
  2. >>> x
  3. >>> x.write("alal")
  4. Traceback (most recent call last):
  5.  File "<pyshell#7>", line 1, in <module>
  6.    x.write("alal")
  7. AttributeError: 'NoneType' object has no attribute 'write'
  8.  
  9. >>> dir()
  10. ['__builtins__', '__doc__', '__name__', '__package__', 'x']
  11. >>> print x
  12. None
  13.  

Creo que si lo dejas asi deberia bastar.
Código
  1. import datetime
  2. Y=(input('Escribe alguna cosa'))
  3. txt=open(logfile, "w")
  4. txt.write(datetime.datetime.now().ctime())
  5. txt.write(Y)

Por cierto, logfile es una variable que contiene el nombre del archivo a abrir, o es una cadena?(si es asi, faltan las comillas?)
Saludos!

Jirp96 gracias por tu ayuda