Problema escribiendo un archivo en Python

Iniciado por Arnau27, 4 Enero 2012, 16:25 PM

0 Miembros y 3 Visitantes están viendo este tema.

Arnau27

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
La confianza es la base de la elegancia.

$Edu$

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.

adastra

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.

Trenico

Cambia el:

Código (python) [Seleccionar]
logfile.write(Y)

Por:

Código (python) [Seleccionar]
txt.write(Y)

Arnau27

Cita de: Trenico en  4 Enero 2012, 23:25 PM
Cambia el:

Código (python) [Seleccionar]
logfile.write(Y)

Por:

Código (python) [Seleccionar]
txt.write(Y)

Me sigue dando el mismo error no lo entiendo...
La confianza es la base de la elegancia.

$Edu$


Jirp96

#6
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 (python) [Seleccionar]

txt=open(logfile, "w").write(datetime.datetime.now().ctime())


Mira esto....
Código (python) [Seleccionar]

>>> x = open("lala", "w").write("hola")
>>> x
>>> x.write("alal")
Traceback (most recent call last):
 File "<pyshell#7>", line 1, in <module>
   x.write("alal")
AttributeError: 'NoneType' object has no attribute 'write'

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'x']
>>> print x
None


Creo que si lo dejas asi deberia bastar.
Código (python) [Seleccionar]
import datetime
Y=(input('Escribe alguna cosa'))
txt=open(logfile, "w")
txt.write(datetime.datetime.now().ctime())
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!

Arnau27

Cita de: 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 (python) [Seleccionar]

txt=open(logfile, "w").write(datetime.datetime.now().ctime())


Mira esto....
Código (python) [Seleccionar]

>>> x = open("lala", "w").write("hola")
>>> x
>>> x.write("alal")
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    x.write("alal")
AttributeError: 'NoneType' object has no attribute 'write'

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'x']
>>> print x
None


Creo que si lo dejas asi deberia bastar.
Código (python) [Seleccionar]
import datetime
Y=(input('Escribe alguna cosa'))
txt=open(logfile, "w")
txt.write(datetime.datetime.now().ctime())
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
La confianza es la base de la elegancia.