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 :

Gestion archive zip: [erro13] Permission Denied (windows8)


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Gestion archive zip: [erro13] Permission Denied (windows8)
    Bonjour bonjour,

    Je viens vers ce forum car j'ai rarement été déçu de la qualité des réponses!
    Je suis en ce moment en train de faire des essais de zip/dezip de fichier epub mais je me retrouve bloqué à cause d'un permission [erro13] Permission Denied.
    Mes recherches sur les sujets semblables n'ont rien donné de concluant pour le moment..
    Pour le code il s'agit simplement de celui de la faq sur le dezippage (http://python.developpez.com/faq/?page=Archive)
    Ma config: je suis sous windows 8, avec Python 2.7
    Est-ce qu'il y a une autorisation à rajouter dans les path windows?

    Merciiii!

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 830
    Points : 7 132
    Points
    7 132
    Par défaut
    Bonjour,

    Il semble que tu n'es pas les droits administrateurs, tu peux essayer d'exécuter ton code avec les droits administrateurs (click droit, exécuter en tant qu'administrateur, je crois...).
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    J'y ai pensé aussi, mais quand je j'exécute Python en admin le problème subsiste: le dézippage commence mais s’arrête au premier sous dossier.
    J'ai peut être fait une simple erreur de débutant mais là je suis un peu perdu..

    EDIT: Après quelques tests de plus il me semble que la reconnaissance des dossier (avec isdir() ne se fait pas correctement.. Pourtant j'utilise bien le même code que la FAQ, sur un fichier dans un repertoire du type C:/Repertoiredetravail/Test_Python.

  4. #4
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour,

    peut etre est-ce autre chose, mais je sait que des fois il faut coder les chemin en doublant les /. ex: C://Repertoiredetravail//Test_Python

    C'est d'ailleurs une raison pour lesquelles on recommande cette écriture pour les chemins. Si tes chemins sont codés en dur, essaie cette notation avec isdir().

    Sinon, n'hesite pas a revenir, et a poster ton code afin que l'on puisse t'aider un peu plus
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    L'idée n'était pas bête mas ce n'est pas les double / malheureusement. Je vous donne mon code, il y a peut être une faille entre ma version et celle de la FAQ..
    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
    def dezip(filezip, pathdst):
        if pathdst == '': pathdst = os.getcwd()  ## on dezippe dans le repertoire locale
        zfile = zipfile.ZipFile(filezip, 'r')
        for i in zfile.namelist():  ## On parcourt l'ensemble des fichiers de l'archive
            print i
            if os.path.isdir(os.path.join(filezip, i)):   ## S'il s'agit d'un repertoire, on se contente de creer le dossier
                try: os.makedirs(pathdst + os.sep + i)
                except: pass
            else:
                try: os.makedirs(pathdst + os.sep + os.path.dirname(i))
                except: pass
                data = zfile.read(i)                   ## lecture du fichier compresse
                fp = open(pathdst + os.sep+ i, "w+b")  	## creation en local du nouveau fichier
                fp.write(data)                         ## ajout des donnees du fichier compresse dans le fichier local
                fp.close()
        zfile.close()
    dezip('C://WORK//Epub//in//3333333333333.epub', 'C://WORK//Epub//out//')
    J'ai également essayé en mode "a" à la place de "w+b" sans changement. Je suis sur une nouvel ordi, donc il faut peut être déclarer quelque chose dans les path windows (il me semblait avoir fait quelque chose comme ça sur mon ancien ordi).
    Merci pour votre aide !

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 466
    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 466
    Points : 9 258
    Points
    9 258
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce n'est pas le slash ('/') qu'il faut doubler, mais le backslash ('\').

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'C:\\WORK\\Epub\\in\\3333333333333.epub'
    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

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Oui désolé

    Je ne code que sous Linux. Il faut effectivement des \ et non des / pour windows. MEA CULPA

    On attend ton retour lezardbleu.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Merci mais non ce n'est toujours pas le problème =( Je vous met la capture d'écran du problème :

    (le noir correspond à un dossier intermédiaire que j'ai masqué, "le pause..." correspond à un pause=raw_input("pause...") que j'avais essayé pour débugger)

    De ce que je vois la fonction dezip s’arrête quand elle doit dézipper du contenu dans un dossier qu'elle a elle-même créé (le dossier META-INF dans ce cas)

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Ah du nouveau! En mettant des \ (pas des doubles!) j'ai une erreur mais pas la même!
    Syntax error: EOL while scanning string litteral à propos de la ligne d'appel de la fonction

    EDIT: donc non c'est pire il me semble ^^

    EDIT: J'ai trouvé ceci de semblabe mais je ne comprend pas la solution.. http://stackoverflow.com/questions/1...-file-in-w-mod

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Up! Pas d'idée? (j'ai trouvé des dizaines de problèmes qui rendait cette erreur erno13 mais rien qui corresponde à mon cas =( )

  11. #11
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Desole, je suis un peu sous l'eau en ce moment.

    Quand je regarde ton code, j'ai l'impression qu'il y a un probleme, sur la ligne 2. Le code apres ":" devrais etre à la ligne et indenté.

    Sinon, pourrais tu essayé avec le code suivant et nous dire ce que ça donne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import zipfile
    mon_zip = zipfile.ZipFile('mon_arch.zip','r')
    for fichier in mon_zip.namelist():
        contenu = mon_zip.read(fichier)
        fichier_sortie = open(fichier, 'wb')
        fichier_sortie.write(contenu)
        fichier_sortie.close()
    mon_zip.close()
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import zipfile
    mon_zip = zipfile.ZipFile('mon_arch.zip','r')
    mon_zip.extractall('./') #on passe en parametre le chemin desire
    mon_zip.close()
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  12. #12
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Je viens de tester le 2nd code du lien que tu donne (1er post), sous Linux, et je n'ai aucun soucis. Aucun soucis egalement sous windows.

    Cela vient donc vraisemblablement de la façon dont le fichier, conteneur ou contenu) est géré par ton Windows.

    Essaie de rajouter des print afin de tracer ce qui se passe au mieux et isoler l'endroit posant probleme
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos retours, malheureusement j'ai toujours les même retour (soir errno 13 soit errno 2 (no such file or directory) dès que j'ai des sous dossiers.

    => ça marche pour des fichiers, ça bloque dès qu'il y a des dossiers.

    => concernant les print je confirme ce que j'avais dit plus haut le programme ne reconnait pas les dossiers (isdir) dans la boucle...

    J'ai testé ce code sous un autre ordi windows7 et même problème. Je vais essayer de réinstaller Python je pense.

  14. #14
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    C'est effectivement ce que j'allais conseiller. Une petite question annexe, quel version de python est utilisée? J'ai testé exclusivement en version 2.7

    On attend ton retour
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bon j'ai tenté de réinstaller la 2.7 et j'ai essayé la 3.3, je me suis juste rajouté ça cannot import name MAXREPEAT (et je n'utilise pas d'environnement virtuel comme c'est le cas sur les forums avec ce problème), ce projet m'a l'air maudit. Je le reprendrais dans quelques semaines à tête reposée.

  16. #16
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Alors d'apres ce que j'ai pu lire sur le net, certaine version de windows bug parfois avec le isdir, meme si cela semble corrigé selon d'autre.

    Quoiqu'il en soit cela pourrait etre à l'origine de ton probleme. On va donc essayer d'etre pragmatique: on va decomposer la ligne 6 qui est composé de plusieurs instructions imbriquées les unes dans les autres, pour déterminer si le prbleme est is dir, ou les autres instructions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if os.path.isdir(os.path.join(filezip, i)):
    deviendra donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    p_join = os.path.join(filezip, i)
    print p_join
    print os.path.isdir(p_join)
    if os.path.isdir(p_join):
    Que donne cela?
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Alors, déjà merci pour ton aide (!), j'ai résolu le maxrepeat en downgradant vers 2.7.4.
    Ensuite j'exécute le code suivant (qui comprend la partie décomposée) :
    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
    23
    24
     
    import os, glob
    import zipfile, tempfile
    def dezip(filezip, pathdst):
        if pathdst == '': pathdst = os.getcwd()  ## on dezippe dans le repertoire locale
        zfile = zipfile.ZipFile(filezip, 'r')
        for i in zfile.namelist():  ## On parcourt l'ensemble des fichiers de l'archive
            print i
            p_join = os.path.join(filezip, i)
            print p_join
            print os.path.isdir(p_join)
            if os.path.isdir(p_join):  ## S'il s'agit d'un repertoire, on se contente de creer le dossier
                try: os.makedirs(pathdst + os.sep + i)
                except: pass
            else:
                #try: os.makedirs(pathdst + os.sep + os.path.dirname(i))
                try: os.makedirs(pathdst + os.sep + os.path.dirname(i))
                except: pass
                data = zfile.read(i)                   ## lecture du fichier compresse
                fp = open(pathdst + os.sep + i, "a+")  	## creation en local du nouveau fichier
                fp.write(data)                         ## ajout des donnees du fichier compresse dans le fichier local
                fp.close()
        zfile.close()
    dezip("C:/WORK/Epub/in/3333333333333.epub", "C:/WORK/Epub/out/")
    et j'obtiens

    C'est effectivement peut être mes version de windows (mais testé sur 2 ordi quand même!). Sinon je vais essayer de passer sous ubuntu mais ça ne m'arrange pas je ne suis du tout encore à l'aise avec =/

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bon je n'ai pas trouvé de solution pour le problème précédent mais j'ai résolu mon objectif de dézarchiver avec la méthode extract :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def dezip(filezip, pathdst):
    	fh = open(filezip, 'rb')
    	z = zipfile.ZipFile(fh)
    	for name in z.namelist():
    		outpath = pathdst
    		z.extract(name, outpath)
    	fh.close()
    dezip("C:/WORK/Epub/in/3333333333333.epub", "C:/WORK/Epub/out/")
    Mais si quelqu'un a une idée sur le problème du code précédent je prends!

  19. #19
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour lezardbleu,

    Je n'ai pas d'explication malheureusement. C'est mystérieux comme fonctionnement. Surtout que cela semble venir de ton environnement, vu que je ne reproduis pas.

    Le principal étant quand même que tu ai une solution. La ligne 5 par contre est surperflu, note directement pathdst ligne 6
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/06/2009, 12h43
  2. Conseils archives zip et gestion de dates
    Par fanadonf dans le forum Général Python
    Réponses: 11
    Dernier message: 06/03/2008, 18h19
  3. permission denied
    Par HULK dans le forum Apache
    Réponses: 2
    Dernier message: 08/04/2004, 19h46
  4. Archive::Zip
    Par Cyspak dans le forum Modules
    Réponses: 2
    Dernier message: 09/09/2003, 13h34
  5. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27

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