Résolu Python - repertoire windows et antislash

Solutions (1)
Tags :
  • Windows
  • Python
, Vieux c*n psychorigide |
Salut,

J'ai besoin d'aide pour répondre à un sujet (inception ...). Celui là :http://www.tomsguide.fr/solutions/id-2947152/sauvegarde...

Résumé : l'auteur veut créer une sauvegarde de l'arborescence de ses repertoires et pouvoir naviguer dedans et en cas de perte voir qu'est ce qui est manquant .

Ma solution :
Recréer l'arborescence de dossier, avec des fichiers vides mais portant le même nom que les fichiers originaux, ainsi il pourra naviger dans le clone de son dossier .

Ma solution qui fonctionne :

J'ai donc un script fonctionnel sous linux -> http://pastebin.com/nsb6u6dq

Le problème c'est pour le transposer sous windows avec les antislash ( \ ) qui servent de caractère d'échappement dans python .

Script windows non fonctionnel :
Spoiler
  1. #!/usr/bin/python
  2.  
  3. import sys
  4. import glob
  5. import os
  6.  
  7. #Pour passer le chemin du dossier en parametre enlevez le "#"
  8. #repertoire_base = sys.argv[1]
  9.  
  10. #Pour que le programme demande le programme en parametre enlevez le "#"
  11. repertoire_base = input("Repertoire à cloner ? ")
  12. repertoire_base = repertoire_base[2:]
  13. print("parametre recu : " + repertoire_base)
  14.  
  15. def analyse(dossier):
  16. print('dossier en cours de lecture : ' + str(dossier))
  17. liste_dossier = glob.glob(dossier +'*')
  18.  
  19. for d in liste_dossier:
  20. d = d.replace("\\\\",'\\')
  21.  
  22. print("dossier = " + str(liste_dossier))
  23.  
  24. for element in liste_dossier:
  25. print('Element en cours : ' + element)
  26. if( os.path.isdir(element)):
  27. print("est un dossier")
  28. print("Donc creation de ./COPY/" + element)
  29. if(os.path.exists(".\\COPY\\"+element) == False):
  30. print("Creation de : " + ".\\COPY\\" + element)
  31. str_create = """.\COPY\\""" + element
  32. os.mkdir(".\\COPY\\"+element)
  33. analyse(element)
  34. else:
  35. print('est un fichier, creation de ./COPY/' + element)
  36. fichier = open(".\\COPY\\" + element,"a")
  37. fichier.close()
  38.  
  39. create = ".\\COPY\\" + repertoire_base
  40. print('create : ' + create)
  41. os.makedirs(create)
  42. analyse(repertoire_base)

Lorsque l'on fait :

a = "\\"
print(a)
>'\\'

Quand on fait

a = "\"
>Erreur

Donc comment foutredieu peut-on créer une chaine qui contient un antislash simple :o  ?
  • archipeldufond a édité ce message
Contenus similaires
Meilleure solution
partage
|
Python t'affiche '\\' lorsque tu le tapes directement dans la console parce qu'il montre aussi les \ d'interprétation (comme les '\n' ou '\t').
Si tu fais print('\\'), tu verras que ton résultat était correct, car print n'affiche pas l'objet mais la chaine interprétée.

tu peux aussi ajouter un r juste avant un chemin pour indiquer à l'interpréteur de ne pas interpréter le contenu.
par exemple:
  1. r'C:\test\test.txt'

par contre, ça ne fonctionne pas si le \ est le dernier caractère (à cause du guillemet ou quotte finals)
Le r est surtout pratique quand on fait un drag'n'drop d'un fichier dans la console.

Autre remarque : tu peux garder les '/' dans les chemins, et même les combiner avec des '\\' (pour rester indépendant de l'OS)
  • archipeldufond a sélectionné cette solution comme la meilleure réponse
  • CRicky a édité ce message
  • CRicky a édité ce message
  • CRicky a édité ce message
  • CRicky a édité ce message
  • CRicky a édité ce message
  • CRicky a édité ce message
  • Commenter cette solution |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS