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

标签 python macos filesystems

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

的符号链接(symbolic link)
$ 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/

相关文章:

Python - 递归 : duplicate int, 列表中的重复 int,嵌套列表中的重复 int

objective-c - 显示无窗口 (LSUIElement) 应用程序的首选项

hadoop - hdfs ls on directory 返回 No such file or directory 错误

c++ - 文件大小方法 boost 库奇怪

python - 查找列表的 "centered average"

python - 修补定义函数的文件中的函数

python - 输入字典 : values that are lists

macos - 如何在 Mac 10.8.3 上安装 qpdf?

ios - CoreML/MLModelConfig 首选MetalDevice - 了解设备放置启发式

windows - 从 Win32 应用程序和 IBM RDZ/Eclipse 对大型机文件的一致访问?