Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top