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 :

Sous Windows, comment récupérer les attributs sur dossiers/fichiers à partir d'un zip


Sujet :

Python

  1. #1
    Membre à l'essai Avatar de ch20100
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Points : 19
    Points
    19
    Par défaut Sous Windows, comment récupérer les attributs sur dossiers/fichiers à partir d'un zip
    Bonjour,
    J'ai un fichier abc.zip qui contient normalement des dossiers et fichiers, dont certains sont cachés et d'autres en lecture seule (sous Windows).
    Mon but est de le vérifier.
    Je sais le vérifier par exemple sur un dossier non compressé (dossier : rep)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import win32api, win32con
    if win32api.GetFileAttributes('rep') & win32con.FILE_ATTRIBUTE_HIDDEN:
        print "caché"
    Ne sachant pas le faire sans la décompression, j'ai décidé de faire l'extraction, puis de vérifier les attributs.
    Mais quand je fais l'extraction, je perds ces attributs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import zipfile, os
    os.chdir('c:/Users/moi/Desktop')
    with zipfile.ZipFile('abc.zip','r') as f:
        f.extractall()
        if win32api.GetFileAttributes('abc/rep/') & win32con.FILE_ATTRIBUTE_HIDDEN:
            print "caché"
    Je vérifie que la décompression a bien eu lieu où je voulais mais plus d'attributs de dossiers/fichiers. Que faire ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 341
    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 341
    Points : 36 861
    Points
    36 861
    Par défaut
    Salut,

    Pourquoi voulez vous que tous les attributs d'un fichier soient transportés dans sa copie "zippée"?

    Ces attributs dépendent de l'OS et leur codage dans le fichier zip sera "standard" et/ou dans des bits spécifiques à l'OS.

    La première chose à regardez est ce que racontent les spécifications du format ZIP.
    Il faut y chercher dans quels champs sont encodés des attributs tels que hidden(*).
    Puis voir comment accéder à cette information depuis la librairie zipfile.
    (*) s'il est transporté par la commande qui crée le "zip".

    - W

  3. #3
    Membre à l'essai Avatar de ch20100
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,- W
    Bonjour et merci de votre réponse.

    Citation Envoyé par wiztricks Voir le message
    Pourquoi voulez vous que tous les attributs d'un fichier soient transportés dans sa copie "zippée"?- W
    Oui, évidemment, c'est là le problème.

    Citation Envoyé par wiztricks Voir le message
    Ces attributs dépendent de l'OS et leur codage dans le fichier zip sera "standard" et/ou dans des bits spécifiques à l'OS.- W
    Tout à fait. Dans ce cas précis, je travaille (exceptionnellement) sous Windows car le zip a été créé sous Windows. J'ai pu vérifier qu'un logiciel comme 7zip transporte les attributs si l'on reste sous Windows pour la compression - décompression. Mais pas avec Python (comme je l'utilise).

    J'espérais une solution miracle (une commande insoupçonnée ) et j'espérais aussi ne pas avoir à chercher du côté de vos indications (le temps est toujours compté) mais je ne vais pas y échapper je pense.
    je ne manquerai pas de revenir compléter ce sujet.
    Merci encore

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 341
    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 341
    Points : 36 861
    Points
    36 861
    Par défaut
    Citation Envoyé par ch20100 Voir le message
    J'espérais une solution miracle (une commande insoupçonnée ) et j'espérais aussi ne pas avoir à chercher du côté de vos indications (le temps est toujours compté) mais je ne vais pas y échapper je pense.
    Dans ce cas, subprocess.Popen("XX") avec XX lançant l'outil ZIP qui sait transporter ces attributs.

    - W

  5. #5
    Membre à l'essai Avatar de ch20100
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Je vais voir cela, mais j'espère pouvoir faire cela dans un futur proche de façon propre (id : tout en Python).
    Merci

Discussions similaires

  1. Comment Récupérer les données sur un disque amovible
    Par mimi_01 dans le forum Composants
    Réponses: 0
    Dernier message: 06/05/2009, 20h09
  2. Réponses: 6
    Dernier message: 10/10/2007, 12h28
  3. Réponses: 11
    Dernier message: 19/06/2006, 13h51
  4. [VB.Net] Comment récupérer les Attributs LDAP ?
    Par le Daoud dans le forum VB.NET
    Réponses: 6
    Dernier message: 03/03/2006, 11h45
  5. Comment récupérer les coordonnées sur le bureau d'une form ?
    Par fma2112 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/02/2006, 23h43

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