python lire un fichier dans une archive compresser (sans lire toute l'archive)

a marqué ce sujet comme résolu.

Bonjour, j’ai une application en python qui générè en sortie pleins de fichier excel

plutôt que d’avoir 10 fichiers excel dans un dossier je voudrais mettre tous sa dans 1 seul fichier (une archive zip par exemple)

ma question est la suivante : je cherche un format de fichier performant à la lecture, mon but n’est pas de créer une archive compresser de mes données mais de les enregistrer et de les lires dans 1 gros fichier de manière rapide.

je cherche donc un format de fichier comme les disques dur virtuel. Un disque dur virtuel c’est un gros fichier pouvant atteindre 1To par exemple, pourtant l’accès aux fichiers est très rapide, si je veut ouvrir toto.txt de 2ko je vais pouvoir l’ouvrir quasi instantanément.

donc voila ma problématique, je cherche donc un format d’archive qui me permet d’enregistrer pleins de petits fichiers et donc l’accès a ces petits fichier sera rapide (je dois pas attendre 3H pour ouvrir un petit fichier sauvegarder dans 1 archive de 100go par exemple)

je fais la comparaison avec un disque dur virtuel car un disque dur virtuel c’est la mème chose, c’est 1 gros fichier de 100Go contenant plein de dossiers et de petits fichier dedans et quand je l’ouvre avec virtualbox/vmware la vm s’ouvre instantanément et l’accès aux petits fichier et lui aussi instantané (elle charge pas le fichier de 100go en mémoire par exemple)

es ce que le format zip ou tar peut convenir par exemple ? ou bien vous auriez une autre lib a me conseiller plus adapté a mon probleme ?

Salut,

Avec le module zipfile, tu n’es pas obligé de charger l’intégralité du .zip : tu peux extraire la liste des fichiers qui sont présents dans l’archive et ne récupérer que la donnée qui t’intéresse.

+0 -0

ok merci, j’aurais du en parler dans le 1er post (j’ai oublier) j’étais tomber sur cette discussion sur stackoverflow :

https://stackoverflow.com/questions/19371860/python-open-file-from-zip-without-temporary-extracting-it

et je voulais avoir vos retours. donc selon se serait donc bon, et pour l’écriture, le write se fait t’il "instantanément" ou bien il doit charger le fichier ?

je dirais que non : https://stackoverflow.com/questions/458436/adding-folders-to-a-zip-file-using-python

Bon, après vérification, la seule chose que ne te permet pas le format zip, c’est de mettre à jour un fichier déjà présent dans l’archive.

Autrement, tu peux tout faire sans charger la totalité de l’archive en mémoire. En gros, l’écriture dans un fichier zip est définitive : tu ne peux pas modifier les fichiers qui sont dedans, juste en ajouter.

+0 -0

Et sinon, tout dépend de ton OS, mais tu peux très facilement créer une partition dans un fichier sous Linux, par exemple.

1
2
3
dd if=/dev/zero of=mon_fichier bs=1G count=1
mkfs.ext4 mon_fichier
mount mon_fichier /mnt

Le format est moins pratique, mais ça peut faire l’affaire suivant tes besoins.

Et sinon, tout dépend de ton OS, mais tu peux très facilement créer une partition dans un fichier sous Linux, par exemple.

1
2
3
dd if=/dev/zero of=mon_fichier bs=1G count=1
mkfs.ext4 mon_fichier
mount mon_fichier /mnt

Le format est moins pratique, mais ça peut faire l’affaire suivant tes besoins.

entwanne

C’est pas un peu overkill ?

Et son app sort des fichiers excel, donc il n’est sans doute pas sous Linux.

+0 -1

Je trouve pas ça overkill, c’est même plutôt élégant comme solution, mais ce qui me gêne un peu dedans, perso, c’est que :

  • ça ne fonctionne que sous les unixoides (voire linux)
  • en termes opérationnels ça demande de rajouter du code pour préparer et gérer correctement le montage, et mon intuition me dit que ce genre de code est un nid à bugs critiques.

Par contre, conceptuellement, j’approuve.

+1 -0

Je comprends pas trop la problématique, pour ma part.

De ce que je comprends, l’idéal serait de mettre ces fichiers excel dans des dossiers.

Résumons ce que dit l’OP :

  • je cherche un format de fichier
    • performant à la lecture
    • enregistrer et de les lires dans 1 […] fichier de manière rapide
    • comme les disques dur virtuel
    • si je veut ouvrir toto.txt de 2ko je vais pouvoir l’ouvrir quasi instantanément
    • me permet d’enregistrer pleins de petits fichiers
    • l’accès a ces petits fichier sera rapide

Pourquoi est-ce que les dossiers ne conviennent pas ?

+5 -0

nohar c’est un peu embêtant sa pour le zip, il n’existe pas un format ou l’on pourrais modifier un fichier à la volé ?

Pour la création d’un partition non car je suis en multiplateforme

Pour le dossier, je préfère tous mettre dans un fichier c’est plus pratique que le dossier

+0 -1

Pour le dossier, je préfère tous mettre dans un fichier c’est plus pratique que le dossier

jipete

Je rejoins la question de victor : pourquoi ?

Un dossier, ce n’est rien d’autre qu’un fichier qui en indexe d’autres…

+4 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte