• Viernes 15 de Noviembre de 2024, 14:39

Autor Tema:  Escribir en una parte especifica de un archivo (tabular)  (Leído 1784 veces)

elcarlosgr83

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Escribir en una parte especifica de un archivo (tabular)
« en: Lunes 20 de Diciembre de 2010, 19:28 »
0
Primero que nada, gracias por leer mi petición, sin mas preamulos hay va...
tengo el siguiente archivo de texto "archivo.txt"

AA AA AA
AA BB AA
AA AA AA

quiero que quede asi

AA AA AA
AA CC AA
AA AA AA

alguna idea???... gacias  :comp:
PD, lo intente con el metodo de writelines() pero me lo pone al final jejeje...

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Escribir en una parte especifica de un archivo (tabular)
« Respuesta #1 en: Lunes 20 de Diciembre de 2010, 19:42 »
0
Estudía sobre expresiones regulares.
En este post no se manejan expresiones regulares, pero te puede guíar la parte de modificación de los archivos
http://radicalpython.blogspot.com/2008/ ... squid.html
El pasado son solo recuerdos, el futuro son solo sueños

elcarlosgr83

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Escribir en una parte especifica de un archivo (tabular)
« Respuesta #2 en: Lunes 20 de Diciembre de 2010, 20:43 »
0
Ok, aun no lo he checado a fondo, pero parece que lo que propones es algo así como poner un identificador.
Lo que pasa es que una opción seria pasar el contenido del archivo a un string...

archivo = open('archivo.txt', 'r') # Leer el contenido
datos = archivo.read() # Asignarlo a una variable
NuevosDatos = str(datos) # convertirla a string
archivo.close() # cerrar el archivo
...
...
# bla, bla, bla Modificar datos
...
...
archivo.write(NuevosDatos) # Escribir los nuevos datos
archivo.close() # Cerrar el archivo

El problema con esto es que tendria que escribir completamente TODO el archivo (lo que quizas no sea muy bueno).
Pero bueno, a lo mejor es la unica forma, tratandose de archivos de texto no, ya que las cadenas en python son inmutables...
es decir, no hay una manera de modificar uno Bytes en el archivo???

ok, así lo hice...
#--------------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
class Columna:
    def __init__(self,nombre,cursor,digitos):
        self.nombre = nombre
        self.cursor = cursor
        self.digitos = digitos
class Archivo:
    def __init__(self,archivo,registroSize):
        self.archivo = archivo
        self.registroSize = registroSize
    def Leer(self):
        archivo = open(self.archivo,'r')
        texto = str(archivo.read())
        archivo.close()
        return texto
    def Registro(self,NumeroFila,Cursor,Bytes):
        NumeroFila = NumeroFila - 1
        archivo = open(self.archivo,'r')
        archivo.seek(self.registroSize * NumeroFila + Cursor)
        return archivo.read(Bytes)
    def CambiarRegistro(self,contenido,NumeroFila,Cursor,Bytes):
        texto = self.Leer()
        NumeroFila = NumeroFila - 1
        corte = (NumeroFila * self.registroSize + Cursor)
        NuevoTexto = texto[0:corte] +contenido+ texto[corte+Bytes:len(texto)]
        archivo = open(self.archivo,'w')
        archivo.write(NuevoTexto)
        archivo.close()
        return NuevoTexto

columna2 = Columna("Columna 2",3,2)
archivo = Archivo('archivo.txt',9)
print archivo.Leer()
print ""
print archivo.CambiarRegistro("XX", 2, columna2.cursor, columna2.digitos)
print ""
print archivo.Leer()
#--------------------------------------------------------------------------------------------