Foros del Web » Programando para Internet » Python »

Problemilla, seguramente de ignorancia.

Estas en el tema de Problemilla, seguramente de ignorancia. en el foro de Python en Foros del Web. Buenas! Veamos, tengo un problemilla con la funcion Read y un If beligerante. Posiblemente, lo que estoy intentando hacer no sea posible, pero yo que ...
  #1 (permalink)  
Antiguo 24/06/2010, 19:35
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 14 años, 4 meses
Puntos: 0
Problemilla, seguramente de ignorancia.

Buenas! Veamos, tengo un problemilla con la funcion Read y un If beligerante. Posiblemente, lo que estoy intentando hacer no sea posible, pero yo que se. Mi problema es el siguiente:

Código:
abrir = open("texto.txt","r")

lee = abrir.readline()
compa = raw_input()
if compa == lee:
    print"si"
    raw_input()
else:
    print "no"
    raw_input()
Esta es la parte que me come la duda. He probado con .read, .readline y .readlines

NADA, de nada, me devuelve un Si. El archivo Texto existe, ya esta escrito. Nada, ni palabras simples, ni complejas, nada. A la única conclusion a la que he llegado, es que simplemente no se puede hacer esa clase de comparación. En ese caso (que una orden por raw_input() se pueda comparar con un archivo externo de texto), me podríais decir como? muchísimas gracias, y perdón por aburrir con "novateces"
  #2 (permalink)  
Antiguo 24/06/2010, 22:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Problemilla, seguramente de ignorancia.

Bienvenido al foro ZeTTo_PraTTi

Lo que tienes que hacer es quitar el enter cuando haces un readline.
Aquí un ejemplo trabajando

Código Python:
Ver original
  1. f = open("texto.txt", "r")
  2.  
  3. line1 = f.readline()
  4. if line1.endswith("\n"):
  5.     line1 = line1[:-1]
  6.  
  7. line2 = raw_input()
  8. if line1 == line2:
  9.     print "%s %s son iguales" % (line1, line2)
  10. else:
  11.     print "%s %s son diferentes" % (line1, line2)

Nota: Cuando postes un problema usa un titulo descriptivo y trata de ser mas claro en la descripción del problema.
  #3 (permalink)  
Antiguo 25/06/2010, 07:39
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemilla, seguramente de ignorancia.

Tomo nota de la nota :)

Muchísimas gracias con esto, aun no puedo probarlo pero espero funcionará. Otra duda es el formato de apertura. He leido que es "+" pero me lo da como inválido. Que pongo? "ar" "a","r"? ya que lo que quiero es que vaya añadiendo cosas otra parte del código y a la vez lo pueda leer para comparar que no existan.

Ais... soy un lios, lo siento >.<
  #4 (permalink)  
Antiguo 25/06/2010, 10:57
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemilla, seguramente de ignorancia.

Solo "+" no es válido. Probá "w+" o "a+". No recuerdo ahora mismo si "r+" vale.

¡Ojo con abrir para lectura y escritura! A menos que vayas dejando el puntero interno del archivo en el lugar indicado, y sepas exactamente qué vas a escribir (y cuánto) puede ser un dolor de cabeza.

Quizás ya lo tengas pensado, pero imaginá esto ("*" es el puntero interno del archivo, el lugar desde el que se lee / escribe):

archivo.txt:

*una
linea
o
dos

lo abro para lectura, leo una línea, el archivo me queda

una
*linea
o
dos

ahora escribo en el archivo una cadena conteniendo
"nueva
cadena"

El resultado es:

una
nueva
cadena*
dos


Cuidado con eso. El puntero interno se puede mover a cualquier parte del archivo usando métodos del lenguaje, pero no hay forma de decir "agrega una cadena en tal posición y desplazando el resto del contenido".


Saludos.
  #5 (permalink)  
Antiguo 26/06/2010, 08:42
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemilla, seguramente de ignorancia.

Hum... muchas gracias por la respuesta. Dado que es una aplicación sencillita, he optado por escribir una función de lectura, y otra de escritura, en las que se abre en el modo adecuado en cada una, para lo que sea necesario. Creo que esto ya esta solucionado.

Muchísimas gracias a ambos, por hacerme saber un poco mas ;)

Etiquetas: ignorancia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:42.