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 :

Besoin d'aide pour utiliser le module rarfile 2.5


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Besoin d'aide pour utiliser le module rarfile 2.5
    Bonjour j'ai télécharger python rarfile 2.5
    pour lire et décompresser des archives rar sur Python 2.7, mais je n'arrive pas à le faire fonctionner correctement, par exemple si j'essaie ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import rarfile
    rf=rarfile.RarFile('rar.rar', mode="r", charset=None, info_callback=None, crc_check = True)
    rf.extract('test.txt')
    j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Traceback (most recent call last):
      File "pyrar.py", line 3, in <module>
        rf.extract('test.txt')
      File "C:\Python27\lib\site-packages\rarfile.py", line 596, in extract
        self._extract([fname], path, pwd)
      File "C:\Python27\lib\site-packages\rarfile.py", line 1137, in _extract
        p = custom_popen(cmd)
      File "C:\Python27\lib\site-packages\rarfile.py", line 1755, in custom_popen
        creationflags = creationflags)
      File "C:\Python27\lib\subprocess.py", line 679, in __init__
        errread, errwrite)
      File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
        startupinfo)
    WindowsError: [Error 2] Le fichier spécifié est introuvable
    le problème c'est que j'ai déjà fait fonctionner une seul fois et je dis bien une seule fois le module correctement pour l'extraction, et depuis plus moyen de le faire marcher, l'archive n'est pourtant pas corrompu elle marche correctement avec Winrar je ne comprend vraiment pas ce qui ce passe, elle n'est même pas protéger par mot de passe l'archive. Si quelqu'un peut n'aider on ne montrant ce qu'il faut faire, en ne montrant les syntaxe par exemple pour les divers commande de ce module.

    D'avance je vous remercie

    MediaVistaIntel

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    Le message me semble clair : il n'y a pas de "test.txt" dans ton archive rar. Pourquoi n'utilises-tu pas la méthode namelist() pour vérifier que le fichier que tu veux extraire est bien présent dans ton archive ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    >>> from rarfile import RarFile
    >>> 
    >>> rar = RarFile('rar.rar')
    >>> rar.namelist()
    [u'anaglyphe.py', u'desktop.ini', u'Image.jpg', u'Image.png', u'Imagedecale.jpg']
    >>> rar.extract('aucune_chance')
     
    Traceback (most recent call last):
      File "<pyshell#11>", line 1, in <module>
        rar.extract('aucune_chance')
      File "C:\Python27\lib\site-packages\rarfile.py", line 596, in extract
        self._extract([fname], path, pwd)
      File "C:\Python27\lib\site-packages\rarfile.py", line 1137, in _extract
        p = custom_popen(cmd)
      File "C:\Python27\lib\site-packages\rarfile.py", line 1755, in custom_popen
        creationflags = creationflags)
      File "C:\Python27\lib\subprocess.py", line 679, in __init__
        errread, errwrite)
      File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
        startupinfo)
    WindowsError: [Error 2] Le fichier spécifié est introuvable
    >>>
    Quant à l'utilisation et la documentation : "The interface is made as zipfile_ like as possible." donc, sauf à la marge, c'est ici.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    euh ... ce n'est pas ça. Je n'arrive pas, non plus, à extraire des fichiers présents dans l'archive (je récupère le même genre de messages) !
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Et sous Linux/Ubuntu, mêmes versions Python et rarfile, ça fonctionne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    plx@satellite:~/Bureau$ python
    Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from rarfile import RarFile
    >>> rar = RarFile('/media/221055AB105586A7/Users/pascal/Desktop/rar.rar')
    >>> rar.namelist()
    [u'tm_world_borders\\tm_world_borders-0.3.dbf', u'tm_world_borders\\tm_world_borders-0.3.README', u'tm_world_borders\\tm_world_borders-0.3.shp', u'tm_world_borders\\tm_world_borders-0.3.shx', u'rarfile-2.5.tar.gz', u'anaglyphe.py', u'Image.jpg', u'tm_world_borders']
    >>> rar.extract('Image.jpg')
    >>>
    donc, rarfile.py à debugger sous Windows... j'hésite à me porter volontaire
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  5. #5
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Trouvé.

    Le "fichier spécifié introuvable" n'est pas du tout le nom d'un fichier de l'archive mais l'exécutable unrar (unrar.exe sous Windows). En lisant un peu plus dans le détail les messages d'erreur, j'aurais pu le deviner ... pan sur le bec.

    La méthode extract ne fait que lancer un sous-process via Popen et exécuter une commande basée sur unrar et qu'il a construite en fonction des entrées :



    Donc, si dans le PATH, on n'a pas mis le répertoire contenant unrar[.exe], ça couine.

    Sous Linux, unrar état accessible via mon PATH, pas sous Windows. Une fois le PATH Windows mis à jour, tout roule
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Merci plxpy! Je confirme: ça fonctionne sous Windows comme tu l'as décrit.

    Comme je n'avais pas unrar.exe, j'ai installé celui qui est ici: http://www.rarlab.com/rar_add.htm. Il s'installe, mais il faut ajouter son répertoire dans le path.

    Bon. Un gars capable de faire un logiciel comme rarfile devrait aussi être capable de faire un petit manuel... Ça nous éviterait de farfouiller dans le code pour découvrir comment ça marche.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

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

    Bon. Un gars capable de faire un logiciel comme rarfile devrait aussi être capable de faire un petit manuel... Ça nous éviterait de farfouiller dans le code pour découvrir comment ça marche
    Le monsieur s'est quand même fendu d'une FAQ dans laquelle il mentionne bien que çà dépend d'unrar dans PATH.

    rarfile FAQ
    ===========

    What are the dependencies?
    --------------------------

    It depends on ``unrar`` command-line utility to do the actual decompression.

    Note that by default it expect it to be in ``PATH``. If unrar
    launching fails, you need to fix this.
    Comme en général, on pose le truc et farfouille dans la doc. en cas de problème, c'est dans la doc

    C'est plutôt le message d'erreur retourné qui est à revoir.

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

  8. #8
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    L'auteur a effectivement annoncé la couleur dès le début :
    • 'features' du fichier README, affiché sur la page d'accueil du package dans GitHub,
    • 'features' de la page PyPI du package.


    On ne prend jamais suffisamment le temps de bien lire les infos ... (c'est vrai aussi que, quelquefois, pas ici, les infos importantes sont au beau milieu d'un tas de détails complètement inutiles pour une première prise de contact).

    Par contre, s'il n'en avait parlé que dans la FAQ, là, j'aurais trouvé ça très moyen : les dépendances de ce type doivent être annoncées au plus tôt.

    Sous Linux, les messages d'erreur récupérés quand le PATH est correct mais que le nom passé en paramètre ne correspond à aucun fichier de l'archive sont les suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> rar.extract('aucune_chance')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "rarfile.py", line 597, in extract
        self._extract([fname], path, pwd)
      File "rarfile.py", line 1139, in _extract
        check_returncode(p, output)
      File "rarfile.py", line 1785, in check_returncode
        raise exc(msg)
    rarfile.RarUnknownError: Unknown exit code [10]
    Pas beaucoup plus parlant mais, à décharge pour l'auteur, la commande unrar (sous Linux) ne donne aucune description de codes retour. Donc '10' ...
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour utilisation de tableaux d'objets
    Par Tagazouh dans le forum Débuter
    Réponses: 16
    Dernier message: 15/04/2012, 11h26
  2. Besoin d'aide pour utiliser le plugin orientationJ
    Par timesteva dans le forum ImageJ
    Réponses: 0
    Dernier message: 29/03/2012, 18h28
  3. Besoin d'aide pour utiliser RSA
    Par AsmCode dans le forum Sécurité
    Réponses: 1
    Dernier message: 26/08/2007, 19h11
  4. Besoin d'aide pour installer le module Encode::Detect
    Par bluecurve dans le forum Modules
    Réponses: 3
    Dernier message: 07/12/2006, 13h34
  5. Besoin d'aide pour utilisation des trie
    Par bluecurve dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 08h04

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