如何在Python中复制Windows subst命令?

时间:2012-05-22 07:49:20

标签: python windows mapped-drive subst

我正在尝试在我的Windows设置上映射虚拟驱动器我正在使用的工具之一不喜欢文件名中的空格。

在命令行中,我将执行以下操作

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

我尝试在Python中复制功能但没有任何成功。我开始使用os.execl()直接执行subst命令,但报告了无效的参数错误。

SO上的其他一些解决方案建议直接使用Win32API。

顺便说一句,我在Windows上使用Python 2.7.3。

2 个答案:

答案 0 :(得分:2)

您可以直接调用Windows API。请注意,您需要在此处传递unicode字符串,或者您可以在函数上设置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")

答案 1 :(得分:0)

理想情况下,您应该使用popen并正确引用参数。您还可以尝试截断路径C:\Progra~1