Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/12/2012, 14h24   #1
MediaVistaIntel
Invité régulier
 
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 9
Points : 9
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 :
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 :
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
MediaVistaIntel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 16h46   #2
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
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 :
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.
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 17h32   #3
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
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) !
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 17h55   #4
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
Et sous Linux/Ubuntu, mêmes versions Python et rarfile, ça fonctionne ...

Code :
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
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 18h52   #5
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
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
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 19h41   #6
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 766
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 766
Points : 3 034
Points : 3 034
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.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
Mes recettes python: http://www.jpvweb.com
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 19h57   #7
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,

Citation:
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.

Citation:
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 06h34   #8
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
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 :
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' ...
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h43.


 
 
 
 
Partenaires

Hébergement Web