1
« en: Lunes 20 de Diciembre de 2010, 20:43 »
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()
#--------------------------------------------------------------------------------------------