kgr
kgr

Reputation: 9948

Python's os.chdir() and os.getcwd() mismatch when using tempfile.mkdtemp() on Mac OSX Lion

I'm not sure if this is a bug or a feature, but when I change the directory using os.chdir() to the one generated with tempfile.mkdtemp() then os.getcwd() reports a directory with /private prefix.

The following code illustrates this:

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'

Could someone please explain why this is so?

Upvotes: 6

Views: 1897

Answers (1)

jdi
jdi

Reputation: 92569

/var is a symlink to /private/var

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

tempfile is just using the environment TMPDIR variable to prefix the path location, so its just a string. But os.getcwd() is resolving the absolute location:

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

Upvotes: 7

Related Questions