Josh Josh - 5 months ago 142
Python Question

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

Say I have a path to a file:

/path/to/some/directory/file.ext


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

Answer

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

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