4

Windows セットアップで仮想ドライブをマップしようとしていますが、使用しているツールの 1 つがファイル名のスペースを好みません。

コマンドラインでは、次のようにします

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 に答える