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 :

Déplacement de répertoire


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Points : 40
    Points
    40
    Par défaut Déplacement de répertoire
    Bonjour,

    Je début dans Python et je suis assez mauvais dans la prog en générale
    Voici ma situation :

    Voici l'arborescence :
    C:\MonSoft\MonDossier
    C:\MAJ

    Dans MonDossier j'ai :
    AppliCommun
    ObjetMetier
    Principal

    Dans Maj j'ai :
    AppliCommun
    Principal

    A noter que tous les dossiers contiennent plusieurs sous-dossiers ainsi que des fichiers.

    En gros, j'aimerais dupliquer le dossier MonDossier (pour sauvegarde) et après remplacer les dossiers contenu dans Maj dans MonDossier.

    J'ai déjà ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #on renomme le dossier actuel
    os.rename ("C:\\MonSoft\\MonDossier","C:\\MonSoft\\oldMonDossier" )
    shutil.copytree ("C:\\MonSoft\\oldMonDossier","C:\\MonSoft\\MonDossier")
    #on colle les nouveaux frameworks
    shutil.copy ("C:\\MAJ","C:\\MonSoft\\MonDossier")
    Ma dernière commande ne fonctionne pas...peut être que j'utilise pas la bonne ?

    D'avance merci,

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Salut

    Pour te simplifier la vie avec les backslashes, tu peux préfixer la string par un 'r', pour dire à Python qu'il s'agit d'une raw string.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> print(r'C:\MonSoft')
    C:\MonSoft
    Ensuite, pourquoi renommer un dossier, puis copier à partir du nouveau nom vers l'ancien ? Copie directement vers le nouveau dossier.

    Ta dernière commande tente de copier le dossier MAJ dans MonDossier, alors que, si j'en crois ton arborescence, tu devrais plutôt copier le contenu de MAJ

    Dans ton cas, tu devras copier un à un les dossiers que contient maj. tu peux obtenir ça grâce à os.listdir. (code non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    src = r'C:\MAJ'
    dst = r'C:\MonSoft\MonDossier'
    for f in os.listdir(src):
        shutil.copy(os.path.join(src, f), os.path.join(dst, f))

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Citation Envoyé par Antoine_935 Voir le message
    Salut

    Pour te simplifier la vie avec les backslashes, tu peux préfixer la string par un 'r', pour dire à Python qu'il s'agit d'une raw string.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> print(r'C:\MonSoft')
    C:\MonSoft
    Salut,

    Super! Vraiment merci pour le petit cours sur les \
    Citation Envoyé par Antoine_935 Voir le message
    Ensuite, pourquoi renommer un dossier, puis copier à partir du nouveau nom vers l'ancien ? Copie directement vers le nouveau dossier.
    Oui, algorithmiquement parlant, je ne trouvais pas cela jolie non plus...Mais je pense qu'avec un shutil.copytree je devrais réussir à faire le backup de mon dossier.
    Citation Envoyé par Antoine_935 Voir le message
    Ta dernière commande tente de copier le dossier MAJ dans MonDossier, alors que, si j'en crois ton arborescence, tu devrais plutôt copier le contenu de MAJ

    Dans ton cas, tu devras copier un à un les dossiers que contient maj. tu peux obtenir ça grâce à os.listdir. (code non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    src = r'C:\MAJ'
    dst = r'C:\MonSoft\\MonDossier'
    for f in os.listdir(src):
        shutil.copy(os.path.join(src, f), os.path.join(dst, f))
    Merci pour la réponse!
    Je teste demain au boulot et je reviens clore le sujet!

    Merci!!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Points : 40
    Points
    40
    Par défaut
    J'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IOError: [Errno 13] Permission denied: 'C:\\MAJ\\Win'

  5. #5
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Permission denied signifie que tu n'as pas les droits requis pour effectuer l'opération sur certains fichiers. Assure-toi que les fichiers ne soient pas en lecture seule, et que tu aies assez de droits pour les écrire (je ne connais pas bien la gestion de droits de windows... qui dépend d'ailleurs de la version que tu as)

    Mais dans ce cas ci, c'est sans doute à cause des doubles backslashes.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Points : 40
    Points
    40
    Par défaut
    Ben j'ai les droits sur le dossier....et je ne suis pas dans un domaine Active Directory, je suis admin de mon PC...donc je ne devrais pas avoir ce message.

    Pour les backslashes, j'ai essayé une fois avec
    et une fois avec
    Et aucun ne marche

    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    C:\Python26>python.exe "C:\Documents and Settings\Dje\Bureau\depl.py"
     
    Traceback (most recent call last):
      File "C:\Documents and Settings\Dje\Bureau\depl.py", line 12, in <module>
        shutil.copy(os.path.join(src, f), os.path.join(dst, f))
      File "C:\Python26\lib\shutil.py", line 88, in copy
        copyfile(src, dst)
      File "C:\Python26\lib\shutil.py", line 52, in copyfile
        fsrc = open(src, 'rb')
    IOError: [Errno 13] Permission denied: 'C:\\MAJ\\Principal'

Discussions similaires

  1. Déplacement des répertoires déjà synchronisés
    Par samirmember dans le forum Subversion
    Réponses: 0
    Dernier message: 29/12/2011, 12h48
  2. Application de déplacement des répertoires pour les GSM
    Par essadiki_ista dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 14/03/2011, 17h57
  3. [Batch] déplacement de répertoires en masse
    Par trash_board dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 26/01/2010, 13h48
  4. Déplacement du répertoire de données
    Par enchanté dans le forum Administration
    Réponses: 1
    Dernier message: 30/10/2008, 16h22
  5. Déplacement du répertoire du dictionnaire Word
    Par Furius dans le forum Word
    Réponses: 3
    Dernier message: 04/10/2005, 16h36

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