Создание ярлыка для сетевого пути в Python

#python #win32com

#python #win32com

Вопрос:

Мне нужно создать ярлык для сетевого диска в Python. У нас есть сетевой диск, который сопоставлен с разными буквами на разных компьютерах (например: I: или R: ), поэтому я не могу поместить букву перед путем, потому что она зависит от пользователя. Вместо этого я напрямую использую сетевой путь, но когда я пытаюсь запустить следующий код, я получаю com_error: «Невозможно сохранить ярлык», и он пытается добавить перед ним букву (например. P:) Есть ли быстрое решение этой проблемы?

 import win32com.client

def main():
    CreateShortcut()

def CreateShortcut():
    shell = win32com.client.Dispatch("WScript.Shell")
    shortcut = shell.CreateShortCut("\xxxxxxx.xx.xx.xxx.com\shared\data\Test_Results_Location.lnk")
    shortcut.Targetpath = "\xxxxxxx.xx.xx.xxx.com\shared\data\Machine\Test_Results"
    #shortcut = shell.CreateShortCut("I:\Test Results Location.lnk")             # This works fine
    #shortcut.Targetpath = "I:\Machine\Test_Results"
    shortcut.save()
    return shortcut

if __name__ == '__main__':
    main()
 

Комментарии:

1. Сетевые пути обычно начинаются с двух обратных косых \servershare черт, т. Е. Попробуйте использовать четыре из них с экранированием.

2. Потрясающе, что работает, спасибо!

3. Тогда я отправлю его в качестве ответа 😉

Ответ №1:

Сетевые пути обычно начинаются с двух обратных косых черт, например \servershare , для доступа к вызываемому общему share server ресурсу . Таким образом, при указании пути к этому общему ресурсу вам придется использовать четыре обратных косых черты, если вы хотите избежать его:

 '\\xxxxxxx.xx.xx.xxx.com\shared\data\Machine\Test_Results'
 

Кроме того, вы также можете использовать необработанные пути, чтобы они выглядели немного менее сложными, поскольку вам не нужно избегать обратной косой черты в них:

 r'\xxxxxxx.xx.xx.xxx.comshareddataMachineTest_Results'