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 :

[Errno 13] Permission denied copie d'un fichier [Python 2.X]


Sujet :

Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut [Errno 13] Permission denied copie d'un fichier
    Bonour à tous

    Voilà j'ai un soucis sur un code qui me paraissait pourtant simple au départ.

    Je souhaite copier un fichier (attention, pas le déplacer mais bien une copie) d'un dossier à un autre :

    Voici le code :

    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
    import os
    import shutil
     
    root_src_dir = 'F:\PATH_SOURCE'
    root_dst_dir = 'F:\PATH_DESTINATION'
     
    for src_dir, dirs, files in os.walk(root_src_dir):
        dst_dir = src_dir.replace(root_src_dir, root_dst_dir)
        if not os.path.exists(dst_dir):
            os.mkdir(dst_dir)
        for file_ in files:
            src_file = os.path.join(src_dir, file_)
            dst_file = os.path.join(dst_dir, file_)
            if os.path.exists(dst_file):
                os.remove(dst_file)
            shutil.copyfile(src_file, dst_dir)
    Lorsque je le lance, j'obtient ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "D:/Users/Desktop/Developement/PYTHON/CopyFile_1.0.py", line 16, in <module>
        shutil.copyfile(src_file, dst_dir)
      File "C:\Python27\lib\shutil.py", line 83, in copyfile
        with open(dst, 'wb') as fdst:
    IOError: [Errno 13] Permission denied: 'F:\\PATH_DESTINATION'
    Je suis sous windows (le code va également servir sous Linux).

    Sous Linux je me serai déjà lancé a faire un chmod 777 sur le dossier, mais sous Win .

    Une idée ?

    Merci pour votre coup de pouce

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

    Dans "shutil.copyfile(src_file, dst_dir)", dst_dir doit être le nom du fichier destination pas que celui du répertoire.

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

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    ok merci

    Problème résolu avec le code ci dessous :

    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
    import os
    import shutil
     
    root_src_dir = 'F:\PATH_SOURCE'
    root_dst_dir = 'F:\PATH_DESTINATION'
     
    for src_dir, dirs, files in os.walk(root_src_dir):
        dst_dir = src_dir.replace(root_src_dir, root_dst_dir)
        if not os.path.exists(dst_dir):
            os.mkdir(dst_dir)
        for file_ in files:
            src_file = os.path.join(src_dir, file_)
            dst_file = os.path.join(dst_dir, file_)
            if os.path.exists(dst_file):
                os.remove(dst_file)
            shutil.copyfile(src_file, dst_dir+'\\'+file_)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    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 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Tant mieux.
    Préférez os.path.join(dst_dir, file_) à "dst_dir+'\\'+file_", votre code sera plus portable.

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

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

Discussions similaires

  1. IOError: [Errno 13] Permission denied
    Par Orange Mango dans le forum Général Python
    Réponses: 5
    Dernier message: 25/04/2010, 16h25
  2. IOError: [Errno 13] Permission denied: 'D:\\smog\\Export jo'
    Par jojo42000 dans le forum Général Python
    Réponses: 7
    Dernier message: 31/07/2008, 14h00
  3. Réponses: 0
    Dernier message: 30/11/2007, 16h29
  4. is_dir : errno=13 - Permission denied
    Par ashurai dans le forum Langage
    Réponses: 9
    Dernier message: 20/03/2007, 17h32
  5. modifier fichier permission denied
    Par fara morgana dans le forum Langage
    Réponses: 12
    Dernier message: 14/06/2006, 15h32

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