Как сделать копию команды Sub в Python?

Я пытаюсь сопоставить виртуальный диск в настройках Windows. Один из инструментов, которые я использую, не любит пробелы в именах файлов.

В командной строке я бы сделал следующее

subst l: "c:\Program Files\Complier\version 6.0\bin"

Я пытался повторить функциональность в Python без какого-либо успеха. Я начал использовать os.execl() выполнить subst команда, но это сообщило об ошибке неверного параметра.

Некоторые из других решений SO предлагают использовать Win32API напрямую.

Кстати, я использую Python 2.7.3 на Windows.

2 ответа

Решение

Вы можете вызвать Windows API напрямую. Обратите внимание, что вам нужно передавать здесь строки Юникода, или вы можете установить argtypes для функции, чтобы получить безопасное поведение.

from ctypes import windll, c_int, c_wchar_p
DefineDosDevice = windll.kernel32.DefineDosDeviceW
DefineDosDevice.argtypes = [ c_int, c_wchar_p, c_wchar_p ]

# Create a subst. Check the return for non-zero to mean success
if DefineDosDevice(0, "T:", "C:\\Temp") == 0:
    raise RuntimeError("Subst failed")

# Delete the subst.
if DefineDosDevice(2, "T:", "C:\\Temp") == 0:
    raise RuntimeError("Couldn't remove subst")

В идеале вы должны использовать popen и цитируя аргументы правильно. Вы также можете попробовать усеченный путь C:\Progra~1,

Другие вопросы по тегам