我不确定这是一个错误还是一个功能,但是当我使用 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/