Pregunta

Estoy intentando asignar una unidad virtual en la configuración de Windows. A una de las herramientas que estoy usando no le gustan los espacios en los nombres de archivos.

En la línea de comando, haría lo siguiente

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

Intenté replicar la funcionalidad en Python sin éxito.comencé a usar os.execl() para ejecutar el subst comando directamente, pero eso informó un error de parámetro no válido.

Algunas de las otras soluciones en SO sugieren usar Win32API directamente.

Por cierto, estoy usando Python 2.7.3 en Windows.

¿Fue útil?

Solución

Puede llamar a la API de Windows directamente.Tenga en cuenta que aquí debe pasar cadenas Unicode, o puede configurar argtypes en la función para obtener un comportamiento de tipo seguro.

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")

Otros consejos

Lo ideal sería utilizar popen y citar los argumentos correctamente.También puedes probar la ruta truncada. C:\Progra~1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top