2010-10-13 76 views
12

在C++中,獲取Shell在Windows XP和Windows 7中調用「我的文檔」的文件夾的完整路徑名稱並不難; Vista中的「文檔」請參閱Get path to My Documents你如何獲得「我的文檔」的確切路徑?

是否有一種簡單的方法可以在Python中執行此操作?

+0

我不知道很多有關Windows,而不是'os.environ [ 'HOMEPATH']'通常在Windows系統上定義? – 2010-10-13 19:34:06

+0

@Joe,在我的系統上'os.environ ['HOMEPATH']'返回''\\''。 – 2010-10-13 19:56:14

+0

@Mark - 啊,我的歉意......它似乎在我可以使用的XP機器上工作,我隱約記得它是標準的......我猜不是! – 2010-10-13 20:04:00

回答

12

您可以使用ctypes的模塊,以獲得 「我的文檔」 目錄:

import ctypes 
from ctypes.wintypes import MAX_PATH 

dll = ctypes.windll.shell32 
buf = ctypes.create_unicode_buffer(MAX_PATH + 1) 
if dll.SHGetSpecialFolderPathW(None, buf, 0x0005, False): 
    print(buf.value) 
else: 
    print("Failure!") 

來源:http://bugs.python.org/issue1763#msg62242

+0

我會給+1,但是使用ANSI版本可能會限制在缺省代碼頁之外使用字符的目錄。 – 2010-10-13 20:15:23

+1

@Adrian McCarthy,謝謝,我沒有注意到。我改變了我的答案,而是使用unicode版本。 – 2010-10-13 20:29:03

+1

我假設魔法常量0x0005是CSIDL_PERSONAL。是否在某處記錄了魔術常量300,還是僅僅添加了一些任意填充的MAX_PATH? – 2010-10-13 20:33:55

相關問題