IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

BZip d'un répertoire avec tarfile


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut BZip d'un répertoire avec tarfile
    Hello,
    J'essaie de faire un Bzip d'un répertoire. J'entends par là, avoir une archive qui contient à sa racine tout les sous-répertoires (+récursion) d'un répertoire Root:

    Exemple avec la structure suivante pour le répertoire de Path c:\Root
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Root
       -Rep A
       -Rep B
       -Rep C
    J'ai essayé le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fd,path = mkstemp(suffix=".bz2"); #-> path = C:\temp\tmp2zrpqb0w.bz2
    with tarfile.open(path, "w:bz2") as tar:
            tar.add("c:\Root", arcname=os.path.sep);
    Seulement quand j'ouvre mon Archive tmp2zrpqb0w.bz2 j'ai un premier niveau parasite qui porte son nom:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tmp2zrpqb0w.bz2
             -tmp2zrpqb0w
                  -Rep A
                  -Rep B
                  -Rep C
    Alors que je voudrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tmp2zrpqb0w.bz2
             -Rep A
             -Rep B
             -Rep C
    Ou à la Rigueur pouvoir contrôler le nom de de cette root directory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tmp2zrpqb0w.bz2
             -MonNomAMoi
                  -Rep A
                  -Rep B
                  -Rep C
    D'avance merci pour votre aide.

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Il faut que ton fichier contienne 2 extensions, tar et bz2, donc pour une archive du nom de toto, alors il faut aboutir à obtenir comme nom d'archive toto.tar.bz2

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut
    Hello,
    Merci pour ton message bistouille.
    Pour simplifié, j'ai utilisé un PATH de fichier en dure pour respecter tes recommandations de nomage.
    J'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    path = "C:/temp/MyArchive.tar.bz2"
    with tarfile.open(path, "w:bz2") as tar:
            tar.add("c:\Root", arcname=os.path.sep);
    Mais ça ne change rien au résultat. J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MyArchive.tar.bz2
             -MyArchive.tar
                  -Rep A
                  -Rep B
                  -Rep C
    Alors que je cherche à avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyArchive.tar.bz2
             -Rep A
             -Rep B
             -Rep C
    D'avance merci

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Tu ne peux pas.

    Par définition le .tar.bz est une compression bz d'un fichier tar (qui est lui meme une archive). Donc Un fichier .tar.bz contient nécéssairement à sa racine un .tar.

    Si cela vous lmimite, il faut considérer un autre format (.zip ?).

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Par défaut
    Merci lg_53. Effectivement, j'ai cherché sur le Web avec ces infos, et visiblement BZip2 ne fait pas les multi-fichiers :-)
    Du coup, je me retranche derrière ma 2ème possibilité, avoir une arborescence du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tmp2zrpqb0w.tar.bz2
             -MonNomAMoi.tar
                  -Rep A
                  -Rep B
                  -Rep C
    Je ne maitrise pas le nom de l'archive que l'on me donne (tmp2zrpqb0w), mais j'aimerais contrôler le nom du tar embarqué.
    Est-ce envisageable ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par crashXpert Voir le message
    Je ne maitrise pas le nom de l'archive que l'on me donne (tmp2zrpqb0w), mais j'aimerais contrôler le nom du tar embarqué.
    Est-ce envisageable ?
    Le nom du tar embarqué est dérivé (par défaut) du nom du fichier.
    Si vous voulez les changer, il va falloir ouvrir le fichier, passer l'argument fileobj à tarfile.open et préciser le nom via name=...
    note: ce nom n'est pas une simple chaîne de caractères. pour un simple fichier tar, çà marche tout seul, pour une combinaison tar.bz2 je n'ai pas trouvé la formule magique.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/04/2006, 09h33
  2. Batch et répertoire avec accent
    Par krfa1 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 28/10/2005, 10h31
  3. Batch : copy d'un répertoire avec des espaces
    Par krfa1 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 26/10/2005, 12h47
  4. Réponses: 2
    Dernier message: 08/07/2005, 10h40
  5. Protection d'un répertoire avec .htaccess
    Par Bweb dans le forum Apache
    Réponses: 2
    Dernier message: 04/05/2004, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo