Josh Josh - 8 months ago 265
Python Question

Creating a relative symlink in python without using os.chdir()

Say I have a path to a file:


In python, I'd like to create a symlink in the same directory as the file, that
points to the file. I'd like to end up with this:

/path/to/some/directory/symlink -> file.ext

I can do this fairly easily using os.chdir() to cd into the directory and
create the symlinks. But os.chdir() is not thread safe, so I'd like to avoid
using it. Assuming that the current working directory of the process is not
the directory with the file (os.getcwd() != '/path/to/some/directory'),
what's the best way to do this?

I guess I could create a busted link in whatever directory I'm in, then
move it to the directory with the file:

import os, shutil
os.symlink('file.ext', 'symlink')
shutil.move('symlink', '/path/to/some/directory/.')

Is there a better way to do this?

Note, I don't want to end up with is this:

/path/to/some/directory/symlink -> /path/to/some/directory/file.ext


You could just set the second argument to the destination, like:

import os
os.symlink('file.ext', '/path/to/some/directory/symlink')