elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  escritura de multiples archivos en python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: escritura de multiples archivos en python  (Leído 2,355 veces)
eolh652

Desconectado Desconectado

Mensajes: 4


Ver Perfil
escritura de multiples archivos en python
« en: 3 Octubre 2013, 23:36 pm »

Buenas Tardes

Espero puedan apoyarme con esta duda, saludos a todos

Dentro de mi servidor tengo una serie de archivos de log que se generan x tiempo, lo que yo necesito hacer es tomar esos archivos, ofuscar un campo determinado de cada uno de estos archivos, y una vez que lo hace se debe crear por cada archivo analizado otro archivo de salida en donde se muestre el contenido del archivo pero con el campo ofuscado y todo lo demas igual.

He hecho un script como este:
----------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

import re
import os
import glob
def rot47(s):
    x = []
    for i in xrange(len(s)):
        j = ord(s)
        if j >= 33 and j <= 126:
            x.append(chr(33 + ((j + 14) % 94)))
        else:
            x.append(s)
    return ''.join(x)

lineas2=0
list_of_files = glob.glob('/home/omar/pruebas_scripts/test_ofus/*.log')
for file_name in list_of_files:
  #for test in origen.readlines():
  origen = open(file_name, 'r')
  destino = open(file_name + ".txt", "w")
  for test in origen.readlines():
     split=test.split("|")
     lineas=test.replace(split[4],rot47(split[4]))
     lineas2 = lineas + 1
destino.writelines(lineas)
origen.close()
destino.close()
-----------------------------------------------------------

lo anterior lo realizo con rot47 para el ofuscado. El problema es que si el archivo origen tiene 4 lineas, en el archivo destino solo crea 1 y si hay mas archivos a generar se generan con 0 lineas, es decir, unicamente lee una linea del archivo en cuestion siendo q tiene más.

Esa sería mi consulta, espero puedan apoyarme y darme algunas sugerencias al respecto.

Muchas gracias, saludos a todos.


En línea

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: escritura de multiples archivos en python
« Respuesta #1 en: 4 Octubre 2013, 00:56 am »

No sé cómo lograste correr ese código. Al error que te refieres se debe a que tienes mal identado justo donde cierras los dos archivos que deben estar al nivel del for más interno.

El código funcional quedaría así:
Código
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4.  
  5. import re
  6. import os
  7. import glob
  8. def rot47(s):
  9.    x = []
  10.    for i in xrange(len(s) - 1):
  11.        j = ord(s[i])
  12.        if j >= 33 and j <= 126:
  13.            x.append(chr(33 + ((j + 14) % 94)))
  14.        else:
  15.            x.append(s)
  16.    return ''.join(x)
  17.  
  18. #lineas2=""
  19. list_of_files = glob.glob('/home/omar/pruebas_scripts/test_ofus/*.log')
  20. for file_name in list_of_files:
  21.  #for test in origen.readlines():
  22.  origen = open(file_name, 'r')
  23.  destino = open(file_name + ".txt", "w")
  24.  for test in origen.readlines():
  25.     split = test.split("|")
  26.     lineas = test.replace(split[4],rot47(split[4]))
  27.     #lineas2 = lineas + 1
  28.     destino.writelines(lineas)
  29.  origen.close()
  30.  destino.close()
  31.  

Ten cuidado con las identaciones y la línea donde haces el replace

Saludos!


En línea

eolh652

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: escritura de multiples archivos en python
« Respuesta #2 en: 4 Octubre 2013, 01:09 am »

Muchas gracias por la respuesta, de verdad que estaba batalle y batalle jeje. Ahora pondré más cuidado con la identación.

Ya con eso se solucionó :)

Saludos
En línea

Softrix18

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: escritura de multiples archivos en python
« Respuesta #3 en: 4 Octubre 2013, 14:06 pm »

Hola, Buen Dia.

Amigo para lectura Y/O escritura de archivo usa with.

ejemplo.

Código
  1. for file_name in list_of_files:
  2.     with open(file_name, 'r') as origen, open(file_name + ".txt", "w") as destino:
  3.        for test in origen.readlines():
  4.            split = test.split("|")
  5.            lineas = test.replace(split[4],rot47(split[4]))
  6.            destino.writelines(lineas)
  7.  
  8.  
  9.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con escritura de archivos
Programación C/C++
drakolive 4 2,825 Último mensaje 2 Junio 2010, 22:03 pm
por Littlehorse
[Solucionado][Python y TkInter] Problme con entries múltiples
Scripting
kerith 0 3,320 Último mensaje 12 Enero 2011, 15:41 pm
por kerith
Escritura con archivos JAVA
Java
rommel89 1 2,696 Último mensaje 19 Julio 2012, 07:05 am
por rommel89
Problema con Python archivos
Scripting
AdeLax 2 2,629 Último mensaje 26 Octubre 2013, 21:37 pm
por 0x5d
Consulta con respecto a documentacion y escritura de archivos (python)
Scripting
Naimaderis 6 3,757 Último mensaje 26 Diciembre 2016, 18:57 pm
por hsk75rv
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines