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 :

copie de fichiers


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    débutant
    Inscrit en
    Février 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : débutant
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2012
    Messages : 88
    Par défaut copie de fichiers
    Bonsoir, débutant en langage python, j'ai pas mal parcouru les aides sur internet et je désire créer un script pour exécuter une sauvegarde d'un dossier, voici ce que j'ai écris :

    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
    #-*- coding: utf-8 -*-
    import os.path,shutil
    try :
        chemin_source = 'C:\\Users\\Robert\\Dropbox\\'
        chemin_destination ='D:\\Mes Documents\\SauvegardesDropbox\\'
        present = os.path.isdir(chemin_destination)
     
        if present == True:
            shutil.rmtree(chemin_destination)
            print('Supression du chemin destination')
        else:
            print('Création du chemin destination')
     
        print('copie de fichiers en cours')
        shutil.copytree(chemin_source,chemin_destination)
    except:
        print('oups!!! problèmes')
     
    c = input('copie terminée')
    Tout se passe bien quand mon dossier destination n'est pas existant.
    Un problème se pose quand le dossier est présent et que je le supprime avec la fonction rmtree. Voici le message d'erreur : "WindowsError: [Error 5] Accès refusé"
    Merci de me conseiller.
    Rob-42

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Et bien le message est clair: Accès refusé. Sans doute une question de droits ou un fichier ouvert.
    A partir de la sur quoi est pourquoi ?
    L'option onerror de shutil.rmtree vous permets de traiter individuellement les erreurs en utilisant un callable (le plus souvent une fonction de contrôle).
    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
    25
    26
    27
    28
    29
    30
    import os.path
    import shutil
    import stat
     
    def onerror(function, path, exc_info):
        if os.access(path, os.W_OK):
            raise Exception("Erreur sur {} alors que les droits sont bons".format(path))
        else:
            print("Changement des droits pour {}".format(path))
            try:
                os.chmod(path, stat.S_IWUSR)
            except:
                raise Exception("Changement des droits impossible pour {}".format(path))
            print('Application de la fonction')
            try:
                function(path)
            except:
                raise Exception("Application de la fonction impossible pour {}".format(path))
     
    chemin_source = 'C:\\Users\\Robert\\Dropbox\\'
    chemin_destination ='D:\\Mes Documents\\SauvegardesDropbox\\'
     
    if os.path.isdir(chemin_destination):
        print('Supression du chemin destination')
        shutil.rmtree(chemin_destination, onerror=onerror)
     
    print('Création du chemin destination')
    print('copie de fichiers en cours')
    shutil.copytree(chemin_source, chemin_destination)
    c = input('copie terminée')
    @+

  3. #3
    Membre confirmé
    Homme Profil pro
    débutant
    Inscrit en
    Février 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : débutant
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2012
    Messages : 88
    Par défaut
    Merci de m'aider, donc voici le message d'erreur.

    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>>
    Supression du chemin destination
    Traceback (most recent call last):
    File "C:\Users\Robert\Desktop\Sauvegarde_Dropox_Robert_forum.py", line 25, in <module>
    shutil.rmtree(chemin_destination, onerror=onerror)
    File "C:\Python32\lib\shutil.py", line 278, in rmtree
    rmtree(fullname, ignore_errors, onerror)
    File "C:\Python32\lib\shutil.py", line 278, in rmtree
    rmtree(fullname, ignore_errors, onerror)
    File "C:\Python32\lib\shutil.py", line 287, in rmtree
    onerror(os.rmdir, path, sys.exc_info())
    File "C:\Users\Robert\Desktop\Sauvegarde_Dropox_Robert_forum.py", line 7, in onerror
    raise Exception("Erreur sur {} alors que les droits sont bons".format(path))
    Exception: Erreur sur D:\Mes Documents\SauvegardesDropbox\Formation Gretta\Fiches recettes alors que les droits sont bons
    >>>
    lorsque qu'avec l'explorateur windows je vais dans le répertoire il est vide et windows me dit que le fichier est ouvert dans un autre programme, chose que j'ai vérifiée.
    rob-42

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par rob-42 Voir le message
    windows me dit que le fichier est ouvert dans un autre programme, chose que j'ai vérifiée.
    Toujours sur le même fichier ?
    Si Windows le dit c'est que le fichier est ouvert. Pour savoir par quoi vous pouvez utiliser divers utilitaires Windows dans le style process explorer de sysinternal ou encore unlocker.
    Il est sans doute possible de le faire directement avec Python mais je n'ai pas de poste Windows donc je laisse cela aux autres...

  5. #5
    Membre confirmé
    Homme Profil pro
    débutant
    Inscrit en
    Février 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : débutant
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2012
    Messages : 88
    Par défaut
    oui toujours avec le même dossier, une fois vidé de ses fichiers et sous dossiers.
    rob-42

Discussions similaires

  1. Copie de fichier sur le bureau
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/05/2005, 20h57
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 22h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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