通过修改注册表达到切换环境的目的,包括双击py、pyw文件时默认程序、右键Edit with IDLE时默认编辑器的修改,本例子是2.7与3.2的切换。
import win32api,win32con
subkeys = ["Python.CompiledFile\\\\shell\\\\open\\\\command",
"Python.File\\\\shell\\\\Edit with IDLE\\\\command",
"Python.File\\\\shell\\\\open\\\\command",
"Python.File\\\\shell\\\\Run in interactive mode\\\\command",
"Python.NoConFile\\\\shell\\\\Edit with IDLE\\\\command",
"Python.NoConFile\\\\shell\\\\open\\\\command",
"Python.NoConFile\\\\shell\\\\Run in interactive mode\\\\command"]
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT,
subkeys[0], 0, win32con.KEY_READ)
version = win32api.RegQueryValue(key, "")[9:11]
version2 = '27' if version=='32' else '32'
print "The current version is Python %s,\\nDo you want to change it \\
to %s?"%(version, version2)
c = raw_input("Y/N?\\n")
if c=="N" or c=="n":
print "Nothing changed!"
elif c=="Y" or c=="y":
a,b=("27","32") if version=="27" else ("32","27")
for subkey in subkeys:
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, subkey,
0, win32con.KEY_ALL_ACCESS)
s = win32api.RegQueryValue(key, "")
win32api.RegSetValue(key, "", win32con.REG_SZ, s.replace(a, b))
win32api.RegCloseKey(key)
print "Done!"
else:
print "what's it?"
raw_input("Press Enter to exit")