Autor Tema: Salto de línea y búsqueda en archivos [Python]  (Leído 6202 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Salto de línea y búsqueda en archivos [Python]
« en: 22 de Noviembre de 2017, 20:58:16 »
Hola gente, buen día. (Llegué a lo que me sugerías Picuino)
Estoy estudiando archivo y me encuentro con 2 dudas(por el momento):
La primera es que no logro que me copie el salto de línea, yo creí que al finalizar la frase con [Enter] bastaba pero parece que en el archivo no se ve reflejado.-
Y lo segundo es si voy por buen camino con las líneas para buscar una palabra en el archivo.-

Código: Python
  1. a=0
  2. f=open("archivo.txt", "a")
  3. for a in range(5):
  4.         b = input("\n Ingrese frase...:")
  5.         f.write(b)
  6.         a+=1
  7.  
  8. f.close()
   

Código: Python
  1. palabra = 'Arequito'
  2. ocurrencias = []
  3. with open('archivo.txt') as lineas:
  4.     for linea in lineas:
  5.         if palabra in linea:
  6.             ocurrencias.append(linea)
  7.  
  8. print ocurrencias

Un fuerte abrazo.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Salto de línea y búsqueda en archivos [Python]
« Respuesta #1 en: 23 de Noviembre de 2017, 05:34:23 »
Daniel, te vas a hacer un lio cambiando continuamente entre Python 2 y Python 3.
Yo te respondo siempre con Python 3.

Este es mi código:
Código: Python
  1. # -*- coding: utf-8 -*-
  2.  
  3. with open('fichero.txt', 'w') as fo:
  4.     #
  5.     #for i in range(5):
  6.     #    b = input("\n Ingrese frase.:")
  7.     #    f.write(b)
  8.     fo.write('Hola\nMundo\nArequito\nTexto\n123456\nCiudad de Arequito\nMás Texto')
  9.  
  10.        
  11. palabra = 'Arequito'
  12. ocurrencias = []
  13. with open('fichero.txt', 'r') as fi:
  14.     for linea in fi:
  15.         if palabra in linea:
  16.             ocurrencias.append(linea.strip())
  17.  
  18. print(ocurrencias)

Al tuyo le falta indicar en open si escribes 'w' o lees 'r' el archivo.
Y siempre prefiero automatizar las operaciones y evitar el input.
Si quieres hacer entradas (inputs) es preferible hacerlo desde un archivo de texto.
Con lenguaje YAML (y módulo PyYaml) es muy fácil escribir, leer y manejar datos.
https://es.wikipedia.org/wiki/YAML
https://pypi.python.org/pypi/PyYAML

Saludos.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Salto de línea y búsqueda en archivos [Python]
« Respuesta #2 en: 23 de Noviembre de 2017, 19:36:14 »
Hola Picuino.
Me imagino que te referís al último print , voy a tener más cuidado.- en cuanto a 'w' ó 'r' tengo leído que si no pongo el segundo argumento se sobreentiende que es sólo lectura.-
Código: Python
  1. with open('fichero.txt', 'w') as fo:
  2.     #
  3.     #for i in range(5):
  4.     #    b = input("\n Ingrese frase.:")
  5.     #    f.write(b)
  6.     fo.write('Hola\nMundo\nArequito\nTexto\n123456\nCiudad de Arequito\nMás Texto')
En esta líneas si quiero grabar lo ingresado por teclado, como debo hacer según tu criterio sin utilizar input.-
Para no hacerlo muy largo no me queda claro lo de utilizar YAML (y módulo PyYaml) en otra oportunidad lo charlamos, estoy un poco desconcertado con la propuesta.-

Un abrazo.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Salto de línea y búsqueda en archivos [Python]
« Respuesta #3 en: 24 de Noviembre de 2017, 14:21:33 »
La propuesta es que no utilices teclado nunca.
El teclado no permite automatizar tareas y eso va en contra de Python.
Es mejor incluir las opciones en un archivo de texto y que Python lea ese archivo. Si quieres modificar la entrada de datos, entonces modificas el archivo de texto con un editor de textos y el teclado y luego el script Python se ejecuta de una sola vez, sin esperar entradas del usuario.

PyYaml es simplemente una librería que te facilita leer datos y opciones desde un archivo de texto.
Por ahora no la necesitas para lo que quieres. Con escribir las frases en un archivo de texto, ya está todo listo.

Saludos.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Salto de línea y búsqueda en archivos [Python]
« Respuesta #4 en: 27 de Noviembre de 2017, 17:37:54 »
Citar
La propuesta es que no utilices teclado nunca.
¿Con esto debo deducir que con python no puedo hacer aplicaciones para escritorio? por Ej. esta:http://www.todopic.com.ar/foros/index.php?topic=48310.0

Un abrazo.
Daniel 
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Salto de línea y búsqueda en archivos [Python]
« Respuesta #5 en: 27 de Noviembre de 2017, 20:56:04 »
Claro que puedes. Incluso aplicaciones visuales con GUI y todo.

A lo que me refiero es que la ventaja de Python consiste en que puede ejecutar scripts desatendidos, leyendo las opciones desde un archivo de datos que previamente has editado con un procesador de textos. En muchos casos eso es mucho más eficiente y rápido (filosofía Unix).

Otra cosa que puedes aprender es a pasar opciones al script Python desde la línea de comandos, también eso es útil para automatizar tareas de forma desatendida, pero cambiando alguna opción en la misma llamada:

python script opcion1 opcion2 ...



Lo de preguntar por el teclado paraliza el script hasta que la persona no responde y te obliga a estar atendiendo la ejecución. A mí personalmente no me gusta a no ser que el programa te avise de algún peligro importante o algo así.

Saludos.