Tengo datos almacenados en una colección de archivos o en un solo archivo compuesto. El archivo compuesto se forma al concatenar todos los archivos separados, y luego preceder a todo con un encabezado que proporciona los desplazamientos y tamaños de las partes constituyentes. Me gustaría tener un objeto similar a un archivo que presente una vista del archivo compuesto, donde la vista representa solo uno de los archivos miembros. (De esta forma, puedo tener funciones para leer los datos que aceptan un objeto de archivo real o un objeto de "vista", y no necesitan preocuparse por cómo se almacena ningún conjunto de datos en particular). ¿Qué biblioteca hará esto por mí?¿Cómo puedo tratar una sección de un archivo como si fuera un archivo en sí?
La clase mmap
parecía prometedora ya que está construida a partir de un archivo, una longitud y un desplazamiento, que es exactamente lo que tengo, pero el desplazamiento debe alinearse con la granularidad de asignación del sistema de archivos subyacente, y los archivos I ' m leer no cumple ese requisito. El nombre de la clase MultiFile
se ajusta a la ley, pero está diseñado para archivos adjuntos en mensajes de correo electrónico, y mis archivos no tienen esa estructura.
Las operaciones de archivos que más me interesan son read
, seek
y tell
. Los archivos que estoy leyendo son binarios, por lo que las funciones orientadas a texto como readline
y next
no son tan cruciales. Eventualmente también podría necesitar write
, pero estoy dispuesto a renunciar a esa función por ahora, ya que no estoy seguro de cómo debe comportarse.
¿Puedes simplemente envolver un objeto de archivo en una clase de conveniencia que tenga los métodos 'read',' seek' y 'tell' que calculan la posición real del archivo desde la pseudo-posición? – mgilson
Además, ¿qué tan grandes son los archivos? ¿Son lo suficientemente pequeños como para caber cómodamente en la memoria? Si ese es el caso, puede dividirlos usando 'StringIO' – mgilson
_" [..] pero el desplazamiento debe estar alineado con la granularidad de asignación del sistema de archivos subyacente, y los archivos que estoy leyendo no cumplen ese requisito. "_ ... ¿puedes aclarar esto? –