import os
import ctypes
def symlink( source, link_name ):
os_symlink = getattr(os, "symlink", None)
if callable(os_symlink):
os_symlink(source, link_name)
else:
csl = ctypes.windll.kernel32.CreateSymbolicLinkW
csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32)
csl.restype = ctypes.c_ubyte
flags = 1 if os.path.isdir(source) else 0
result = csl(link_name, source, flags)
if result == 0:
raise ctypes.WinError()
return result
result = symlink( "c:\\etc\\test.txt", "c:\\etc\\test_link.txt" ) # must have cmd.exe running as Administrator
print result