Python 为什么';t';C:';我想这是什么意思?

Python 为什么';t';C:';我想这是什么意思?,python,windows,path,directory,getcwd,Python,Windows,Path,Directory,Getcwd,在Windows 7上,我启动空闲的Python 2.7.5 Shell: >>> import os >>> os.getcwd() 'C:\\Python27' >>> os.path.relpath('C:\\') '..' >>> os.path.relpath('C:') '.' >>> os.chdir('C:') >>> os.getcwd() 'C:\\Python27'

在Windows 7上,我启动空闲的Python 2.7.5 Shell:

>>> import os
>>> os.getcwd()
'C:\\Python27'
>>> os.path.relpath('C:\\')
'..'
>>> os.path.relpath('C:')
'.'
>>> os.chdir('C:')
>>> os.getcwd()
'C:\\Python27'

发生了什么,为什么会这么复杂?

您不想更改为实际文件夹,但要更改为“c:”,则需要正确的命令

import os 
os.chdir('c:\\')

它会很好的工作。双反斜杠的原因是为了转义反斜杠(用作转义字符)。

在Windows上,这种行为可能有点奇怪-如果从cmd.exe启动Python或直接启动Python(不通过cmd.exe),其行为会有所不同。正如已经指出的,正确的命令是
os.chdir('c:\\')
。提供更多详细信息。

这些都很有意义
C:
不带路径指定表示驱动器
C:
上的当前目录。因此,相对路径是
,因为您在驱动器
C:
上,而且您位于
C:\\Python27
,那么到
C:\`的相对路径是
。`。这可以追溯到DOS时代,“cd X:”会将您带到X:上的最后一个目录,而不一定是X:的根目录,但为什么要这样设置呢?对我来说,“c:”应该是指根文件夹“c:\”。“c:”仍然“在”特定文件夹中是否有充分的理由。所有的驱动器都有“cwd”吗?@Scruffy这听起来是一件很棒的事情,你可以测试一下(我保证,这很容易,而且是一个有趣的练习!)。至于原因,这是windows从非常古老的时代继承下来的一个遗留问题。@Scruffy,正如我在回答中所解释的,这取决于您如何运行Python。@Scruffy:“对我来说,‘c:'应该是根文件夹‘c:\’”——但您并没有发明DOS,所以这不是您的职责;-)当Python在Windows上运行时,它确保以“C:”开头的路径在Python中的含义与在Windows中的含义相同。是的,所有驱动器在任何时候都有一个当前目录。(好吧,不管是什么效果和目的)这在命令行中非常有用。