2012-05-22 66 views
2

我想映射一個虛擬驅動器在我的Windows設置我正在使用的工具之一不喜歡文件名中的空格。如何在Python中複製Window的subst命令?

在命令行中,我會做以下

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

我試圖複製在Python的功能沒有任何成功。我開始使用os.execl()直接執行subst命令,但報告了無效的參數錯誤。

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

順便說一句,我在Windows上使用Python 2.7.3。

+0

可能是'subprocess'模塊可以提供幫助。嘗試使用'subprocess.call()'完成此任務。 – RanRag

回答

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

理想情況下,您應該使用popen並正確引用參數。您也可以嘗試截斷的路徑C:\Progra~1