За пределами Вашей техники почему бы не использовать стандартный класс Java JarFile для получения ссылок Вы хотите? Оттуда большинство Ваших проблем должно уйти.
Файловая система NTFS имеет точки соединения, я думаю, вы можете использовать их вместо них, вы можете использовать python win32 API модуль для этого, например
import win32file
win32file.CreateSymbolicLink(fileSrc, fileTarget, 1)
Если вы не хотите полагаться на модуль win32API, вы всегда можете использовать ctypes
и напрямую вызвать CreateSymbolicLink
Win32 API, например
import ctypes
kdll = ctypes.windll.LoadLibrary("kernel32.dll")
kdll.CreateSymbolicLinkA("d:\\test.txt", "d:\\test_link.txt", 0)
MSDN ( http: // msdn.microsoft.com/en-us/library/aa363866(VS.85).aspx) говорит, что минимально поддерживаемый клиент - Windows Vista
Вдобавок : Это также работает с каталогами (укажите, что с третий аргумент). С поддержкой юникода это выглядит так:
kdll.CreateSymbolicLinkW(UR"D:\testdirLink", UR"D:\testdir", 1)
также см. Создание точки соединения NTFS в Python
Проблема заключается в том, как объяснялось, например, здесь , что собственная поддержка Windows функциональности символических ссылок варьируется в разных версиях Windows, так что, например, в Vista (с большим количеством работы ) вы можете получить больше функциональности, чем в XP или 2000 (ничего, AFAIK в других версиях win32). Или вместо этого у вас могут быть ярлыки, которые, конечно, имеют свой собственный набор ограничений и не «в действительности» эквивалентны символическим ссылкам Unix. Итак, вы должны точно указать, какие функции вам нужны, сколько из них вы готовы пожертвовать на алтарь работы cross-win32 и т. Д. - ЗАТЕМ мы можем решить, как реализовать выбранный вами компромисс в терминах of ctypes
или win32all
вызывает ... это в некотором смысле наименьшее из них.