I am trying to find out the location of system folders with Python 3.1. For example "My Documents" = "C:\Documents and Settings\User\My Documents", "Program Files" = "C:\Program Files" etc etc.
+4
A:
To get the "My Documents" folder, you can use:
from win32com.shell import shell
df = shell.SHGetDesktopFolder()
pidl = df.ParseDisplayName(0, None,
"::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]
mydocs = shell.SHGetPathFromIDList(pidl)
print mydocs
From here.
I'm not sure what the equivalent magic incantation is for "Program Files", but that should hopefully be enough to get you started.
Dominic Rodger
2010-01-14 10:47:49
In Python <3, yeah. In Python 3.1:>>> from win32com.shell import shellTraceback (most recent call last): File "<pyshell#0>", line 1, in <module> from win32com.shell import shellImportError: No module named win32com.shell
Mr_Chimp
2010-01-14 10:50:11
Is win32com installed? There are versions available for Python 3.1 (see http://sourceforge.net/projects/pywin32/files/)
Dominic Rodger
2010-01-14 10:51:46
[Edit] that works great, thanks!
Mr_Chimp
2010-01-14 11:03:01
+3
A:
I found a slightly different way of doing it. This way will give you the location of various system folders and uses real words instead of CLSIDs.
import win32com.client
objShell = win32com.client.Dispatch("WScript.Shell")
allUserDocs = objShell.SpecialFolders("AllUsersDesktop")
print allUserDocs
Other available folders: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Recent, SendTo, StartMenu, Startup & Templates
Mr_Chimp
2010-01-14 11:46:33