10
votes

Python Os.chDir modifie le nom du répertoire transduit

J'essaie de changer le répertoire de travail actuel en Python à l'aide de OS.CHDIR. J'ai le code suivant: xxx pré>

Cependant, lorsque je l'exécute, il semble de modifier le répertoire, car il sort avec le message d'erreur suivant: P>

Traceback (most recent call last):
File "C:\Users\Josh\Desktop\LapseBot 1.0\LapseBot.py", line 3, in <module>
os.chdir("C:\Users\Josh\Desktop\20130216")
WindowsError: [Error 2] The system cannot find the file specified
  'C:\\Users\\Josh\\Desktop\x8130216'


1 commentaires

Essayez d'ajouter une autre backlash avant "2013"


5 Réponses :


3
votes

Cela devrait fonctionner -

os.chdir("C:\Users\Josh\Desktop\\20130216")


2 commentaires

Pourquoi avez-vous besoin du deuxième barre-backslash?


@Stephan parce que "\ 201" est un personnage. Nous devons échapper à la barre oblique inverse pour dire à Python que vous ne vouliez pas dire que, mais c'est juste une autre barre oblique inverse (séparateur de chemin d'accueil ici)



26
votes

Python interpréte la partie \ 2013 du chemin comme la séquence échappée \ 201 , qui mappe au caractère \ \ x81 , qui est ¼ (et bien sûr c: \ users \ josh \ dektopü30216 n'existe pas).

Utilisez une chaîne brute, pour vous assurer que le python ne doit pas t essayer d'interpréter quoi que ce soit à la suite d'un \ comme séquence d'échappement. xxx


4 commentaires

Ou utilisez des barres obliques avant ou doublez les backslashes.


@Martijnpieters: Oui, bon point. Python peut comprendre correctement les chemins tels que c: / users / josh /... sous Windows.


Que fait le "R" ??


@Nabin C'est comment vous définissez une chaîne brute, c'est-à-dire une chaîne sans séquences d'échappement



4
votes

Vous pouvez également utiliser os.path.join code> ( documentation ). Exemple:

os.chdir(os.path.join('C:\Users\Josh\Desktop', '20130216'))


0 commentaires

-1
votes

J'ai fait face au même problème, mais vous devez essayer: xxx

Utiliser \\ alors peut-être que vous devriez obtenir votre solution.


0 commentaires

0
votes

Il y a deux à utiliser os.chdir () :

  1. Si vous utilisez une chaîne brute que d'utiliser une seule barre oblique inverse \ :

    Os.chDir (R "C: \ Users \ Josh \ Desktop \ 20130216")

    ou

    1. Si vous n'utilisez pas une chaîne brute que d'utiliser double barre arrière \\

      OS.CHDIR ("C: \ Users \ Josh \ Desktop \ 20130216")


0 commentaires