Foros del Web » Programando para Internet » Python »

Leer documentos.

Estas en el tema de Leer documentos. en el foro de Python en Foros del Web. ;) Este ejercicio si que lo veo todo negro. Ver ejercicio. Parace que hay qu ehacer algo de esto. Cita: - Introduces el nombre de ...
  #1 (permalink)  
Antiguo 03/11/2010, 13:12
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Leer documentos.

;)

Este ejercicio si que lo veo todo negro.

Ver ejercicio.

Parace que hay qu ehacer algo de esto.

Cita:
- Introduces el nombre de un fichero. (Por ejemplo, documento.doc).
- Introducir el nombre de otro fichero. (Por ejemplo, tema.1.tex). (Este tiene dos puntos, ya me lió).
- Si el fichero no tiene punto, la pantalla avisa que está vacío.
- Cuando detecte un archivo con un punto, mostrará en pantalla sólo la extensión del archiv. (Por ejemplo, doc, tex).
;)
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #2 (permalink)  
Antiguo 03/11/2010, 13:19
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer documentos.

Código Python:
Ver original
  1. if '.' in nombre_de_archivo:
  2.     print nombre_de_archivo.split('.')[-1]
  3. else:
  4.     print "Archivo sin extension"

Edito: Version mejorada
Código Python:
Ver original
  1. data = nombre_del_archivo.split('.')
  2. if len(data) >= 2:
  3.     print data[-1]
  4. else:
  5.     print "Archivo sin extension"

Última edición por razpeitia; 03/11/2010 a las 14:15
  #3 (permalink)  
Antiguo 03/11/2010, 15:42
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Leer documentos.

Buenas.

Por lo que dice el anunciado. Creí que te pedía dos entradas de archivos.

Código Python:
Ver original
  1. data = nombre_del_archivo.split('.')
  2. if len(data) >= 2:
  3.     print data[-1]
  4. else:
  5.     print 'Archivo sin extensión.'

En esta línea:
Código:
if len(data) >= 2:
Por lo que entiendo, ese >= 2. ¿Por qué?
Si fuera -3 que te cuente desde el c a la d lo entiendo. "doc".

Código:
    print data[-1]
En cuanto a esta línea, el -1 dentro de la cadena sería a mi juicio el la letra c de doc.

Me funciona, pero quiero saber.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #4 (permalink)  
Antiguo 03/11/2010, 18:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer documentos.

Split regresa una lista de cadenas.
Ejemplo:
Código Python:
Ver original
  1. #Caso 1
  2. "cadena"
  3. "cadena".split(".")
  4. #>>> ['cadena']
  5.  
  6. #Caso 2
  7. "a.b.c"
  8. "a.b.cd".split(".")
  9. #>>>['a', 'b', 'cd']
Si la longitud de la lista que regreso es 1 significa que no hay ningún punto (Como en el caso 1). Si la longitud de la lista es 2 o mas significa que hay 1 o mas puntos.

Ahora para acceder a un elemento de la lista usas un indice que va desde 0 hasta N-1 donde N es la longitud de la lista. Pero si el indice es negativo va hacia atrás si quiero el ultimo elemento -1, si quiero el penúltimo -2 y así sucesivamente hasta -N.
  #5 (permalink)  
Antiguo 03/11/2010, 18:34
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Leer documentos.

Muy buena la explicación.

Código Python:
Ver original
  1. nombre_del_archivo = raw_input('Nombre del archivo: ')
  2.  
  3. while nombre_del_archivo != '':
  4.     data = nombre_del_archivo.split('.')
  5.     if len(data) >= 2:
  6.         print data[-1]
  7.     else:
  8.         print 'Archivo sin extensión.'
  9.         break
  10. nombre_del_archivo = raw_input('Nombre del archivo: ')

En este código tiene un efecto no deseado. El deseado es que te pida introducir el nombre del archivo sea con puntos o no y después de mostar el mensaje sea afirmativo o no, con el bucle te pida otra vez introducir nombre de archivos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #6 (permalink)  
Antiguo 03/11/2010, 18:55
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer documentos.

Quita el break del else, recuerda break es para salir de un ciclo.
Identa la ultima linea. Para que este dentro del while
  #7 (permalink)  
Antiguo 04/11/2010, 03:17
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Leer documentos.

Gracias. Lo había probado tambiñen sin el break pero no puse bien identada la última línea.

Muchas gracias.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar

Etiquetas: documentos
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 01:16.