我不确定这是错误还是功能,但是当我使用 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/
关于在 Mac OSX Lion 上使用 tempfile.mkdtemp() 时,Python 的 os.chdir() 和 os.getcwd() 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482702/