web-dev-qa-db-fra.com

Python os.chdir modifie le nom du répertoire passé

J'essaie de changer le répertoire de travail actuel dans Python en utilisant os.chdir. J'ai le code suivant:

import os

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

Cependant, lorsque je l'exécute, il semble que le répertoire change, car le message d'erreur suivant s'affiche:

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'

Quelqu'un peut-il m'aider?

10
Josh Wood

Python interprète la partie \2013 du chemin en tant que séquence d'échappement \201, qui correspond au caractère \x81, qui est ü (et bien sûr, C:\Users\Josh\Desktopü30216 n'existe pas).

Utilisez une chaîne brute pour vous assurer que Python n'essaie pas d'interpréter quoi que ce soit après un \ en tant que séquence d'échappement.

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

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

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

Ceci est plus élégant + il est compatible avec différents systèmes d'exploitation. 

3
vaultah

Cela devrait marcher -

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

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

  1. Si vous utilisez une chaîne brute, utilisez une simple barre oblique inverse \:

    os.chdir (r "C:\Utilisateurs\Josh\Bureau\20130216")

ou

  1. Si vous n'utilisez pas de chaîne brute, utilisez une double barre oblique inversée \\

    os.chdir ("C:\Utilisateurs\Josh\Bureau\20130216")

0
Anas Khan