【发布时间】:2018-07-19 22:59:53
【问题描述】:
我今天了解到,在 windows 上的 python 中,执行 os.chdir('f:\\') 与执行 os.chdir('f:') 非常不同。带有尾部反斜杠的命令实际上会更改当前目录。如果没有反斜杠,该命令就像在命令提示符下键入f:,并将当前目录更改为f 驱动器上的最后一个当前目录。
这是一个例子:
import time
import os
if __name__ == '__main__':
os.chdir('f:\\directory')
print 'cwd is {}'.format(os.getcwd())
os.chdir('d:\\directory')
print 'cwd is {}'.format(os.getcwd())
os.chdir('f:')
print 'cwd is {}'.format(os.getcwd())
os.chdir('f:\\')
print 'cwd is {}'.format(os.getcwd())
打印
cwd is f:\directory
cwd is d:\directory
cwd is f:\directory
cwd is f:\
我可以理解为什么这种差异很有用,但找不到任何记录这种行为的东西。我已经习惯了在我的目录中留下斜杠,因为我通常在这里使用字符串......
这种行为是否记录在任何地方?我能指望它不改变吗?
【问题讨论】:
-
这不是 Python 功能,而是 Windows 功能。在Windows上,每个驱动器都有自己的工作目录,所以
F:表示F盘的当前工作目录,而`F:\`表示F盘的根目录。 -
另外,它并不特定于
chdir。如果你open('F:spam.txt'),你会在 F 的当前工作目录上得到spam.txt,但open('F:\\spam.txt')你会在 F 的根目录上得到spam.txt。 -
这是 Windows 功能。而且 Python 的文档是跨平台的,所以关于它可能运行的操作系统的大部分细节都没有讨论。
-
@abarnert:这 2 个 cmets 是一个很好的答案——尤其是第一个。 (除了“我可以依靠它不改变吗”,我的意思是谁能知道微软将在他们新宣布的“改进”控制台中打破什么。)