4

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

在命令行上,我会执行以下操作

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

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

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

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

4

2 回答 2

4

您可以直接调用 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")
于 2012-05-22T10:02:44.323 回答
0

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

于 2012-05-22T07:52:20.653 回答