Python os.chdir正在修改传递的目录名

Python os.chdir正在修改传递的目录名,python,python-2.7,directory,chdir,Python,Python 2.7,Directory,Chdir,我正在尝试使用os.chdir更改python中的当前工作目录。我有以下代码: import os os.chdir("C:\Users\Josh\Desktop\20130216") 但是,当我运行它时,它似乎会更改目录,因为它会显示以下错误消息: Traceback (most recent call last): File "C:\Users\Josh\Desktop\LapseBot 1.0\LapseBot.py", line 3, in <module> os.chd

我正在尝试使用os.chdir更改python中的当前工作目录。我有以下代码:

import os

os.chdir("C:\Users\Josh\Desktop\20130216")
但是,当我运行它时,它似乎会更改目录,因为它会显示以下错误消息:

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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Josh\Desktop\InverseBot 1.0\InverseBot.py”,第3行,在
chdir(“C:\Users\Josh\Desktop\20130216”)
WindowsError:[错误2]系统找不到指定的文件
'C:\\Users\\Josh\\Desktop\x8130216'
有人能帮我吗?

这应该行-

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

Python将路径的
\2013
部分解释为转义序列
\201
,它映射到字符
\x81
,即u(当然,
C:\Users\Josh\Desktopü30216
不存在)

使用原始字符串,以确保Python不会试图将
\
后面的任何内容解释为转义序列

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

您还可以使用
os.path.join
()。 例如:


这是更优雅的+它与不同的操作系统兼容

我也遇到过同样的问题,但你必须尝试:

os.chdir(c:\\user\\Josh\\Desktop)

使用
\\
也许你应该得到你的解决方案。

有两种方法可以使用
os.chdir()

  • 如果您使用的是原始字符串,则使用单个反斜杠
    \

    chdir(r“C:\Users\Josh\Desktop\20130216”)

  • 如果不使用原始字符串,请使用双反斜杠
    \\\

    chdir(“C:\Users\Josh\Desktop\20130216”)


  • 尝试在“2013”之前添加另一个反斜杠为什么需要第二个反斜杠?@Stephan,因为“\201”是一个字符。我们需要避开反斜杠来告诉python您不是这个意思,但它只是另一个反斜杠(实际上这里是路径分隔符),或者使用前斜杠,或者将反斜杠加倍。@MartijnPieters:是的,说得对。Python可以正确理解Windows上的路径,如
    C:/Users/Josh/…
    。r是做什么的???@Nabin它是如何定义原始字符串的,即没有任何转义序列的字符串
    os.chdir(c:\\user\\Josh\\Desktop)