Python 的 os.chdir() 和 os.getcwd() 在 Mac OSX Lion 上使用 tempfile.mkdtemp() 时不匹配



我不确定这是一个错误还是一个功能,但是当我使用 os.chdir() 将目录更改为使用 tempfile.mkdtemp() 生成的目录时,os.getcwd()报告一个带有/private前缀的目录。

以下代码对此进行了说明:

In [1]: import os, tempfile
In [2]: d = tempfile.mkdtemp()
In [3]: d
Out[3]: '/var/folders/s4/grpfgn297hjgnfws3tl_gnt80000gn/T/tmpmfNUYz'
In [4]: os.chdir( d )
In [5]: os.getcwd()
Out[5]: '/private/var/folders/s4/grpfgn297hjgnfws3tl_gnt80000gn/T/tmpmfNUYz'

有人可以解释为什么会这样吗?

/var是指向/private/var的符号链接

$ ls -l /var
lrwxr-xr-x@ 1 root  wheel  11 Dec  2  2011 /var -> private/var

tempfile只是使用环境TMPDIR变量作为路径位置的前缀,因此它只是一个字符串。但os.getcwd()正在解决绝对位置:

$ echo $TMPDIR
/var/folders/04/kc575q1n6x9drkwxyfljg5zw0000gn/T/

最新更新