2023年12月7日发(作者:)
Python获取“我的文档”等win系统路径的几种方法
es
import es
def getDocPath(pathID=5):
'''path=5: My Documents'''
buf= _unicode_buffer(_PATH)
olderPathW(None, pathID, None, 0, buf)
return
for i in range(60):
print(i,getDocPath(i))
print('nMy Documents' Path:',end='nt')
print(getDocPath())
运行结果:(可以得到几十种windows系统路径)
0 C:UsersAdministratorDesktop
1
2 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuPrograms
3
4
5 d:Documents
6 d:Favorites
7 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
8 C:UsersAdministratorAppDataRoamingMicrosoftWindowsRecent
9 C:UsersAdministratorAppDataRoamingMicrosoftWindowsSendTo
10
11 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart Menu
12
13 C:UsersAdministratorMusic
14 C:UsersAdministratorVideos
15
16 C:UsersAdministratorDesktop
17
18
19 C:UsersAdministratorAppDataRoamingMicrosoftWindowsNetwork Shortcuts
20 C:WindowsFonts
21 C:UsersAdministratorAppDataRoamingMicrosoftWindowsTemplates
22 C:ProgramDataMicrosoftWindowsStart Menu
23 C:ProgramDataMicrosoftWindowsStart MenuPrograms
24 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
25 C:UsersPublicDesktop
26 C:UsersAdministratorAppDataRoaming
27 C:UsersAdministratorAppDataRoamingMicrosoftWindowsPrinter Shortcuts
28 C:UsersAdministratorAppDataLocal
29 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
30 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
31 d:Favorites
32 C:UsersAdministratorAppDataLocalMicrosoftWindowsTemporary Internet Files
33 C:UsersAdministratorAppDataRoamingMicrosoftWindowsCookies
34 C:UsersAdministratorAppDataLocalMicrosoftWindowsHistory
35 C:ProgramData
35 C:ProgramData
36 C:Windows
37 C:Windowssystem32
38 C:Program Files
39 d:Pictures
40 C:UsersAdministrator
41 C:WindowsSysWOW64
42 C:Program Files (x86)
43 C:Program FilesCommon Files
44 C:Program Files (x86)Common Files
45 C:ProgramDataMicrosoftWindowsTemplates
46 C:UsersPublicDocuments
47 C:ProgramDataMicrosoftWindowsStart MenuProgramsAdministrative Tools
48 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsAdministrative Tools
49
50
51
52
53 C:UsersPublicMusic
54 C:UsersPublicPictures
55 C:UsersPublicVideos
56 C:Windowsresources
57 C:Windowsresources0804
58 C:ProgramDataOEM Links
59 C:UsersAdministratorAppDataLocalMicrosoftWindowsBurnBurn
My Documents' Path:
d:Documents
from import shell
def getDocPath(pathID=5):
try:
return olderPath(0, pathID, None, 0)
except:
return ''
for i in range(60):
print(i,getDocPath(i))
print('nMy Documents' Path:',end='nt')
print(getDocPath())
运行结果:(同 olderPathW() 返回的完全一致,但本函数 olderPath()
若pathID不存在会报错退出,所以用了pt语句)
0 C:UsersAdministratorDesktop
1
2 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuPrograms
3
4
5 d:Documents
6 d:Favorites
7 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup8 C:UsersAdministratorAppDataRoamingMicrosoftWindowsRecent9 C:UsersAdministratorAppDataRoamingMicrosoftWindowsSendTo10
11 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart Menu12
13 C:UsersAdministratorMusic14 C:UsersAdministratorVideos15
16 C:UsersAdministratorDesktop17
18
19 C:UsersAdministratorAppDataRoamingMicrosoftWindowsNetwork Shortcuts20 C:WindowsFonts21 C:UsersAdministratorAppDataRoamingMicrosoftWindowsTemplates22 C:ProgramDataMicrosoftWindowsStart Menu23 C:ProgramDataMicrosoftWindowsStart MenuPrograms24 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup25 C:UsersPublicDesktop26 C:UsersAdministratorAppDataRoaming27 C:UsersAdministratorAppDataRoamingMicrosoftWindowsPrinter Shortcuts28 C:UsersAdministratorAppDataLocal29 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup30 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup31 d:Favorites32 C:UsersAdministratorAppDataLocalMicrosoftWindowsTemporary Internet Files33 C:UsersAdministratorAppDataRoamingMicrosoftWindowsCookies34 C:UsersAdministratorAppDataLocalMicrosoftWindowsHistory35 C:ProgramData36 C:Windows37 C:Windowssystem3238 C:Program Files39 d:Pictures40 C:UsersAdministrator41 C:WindowsSysWOW6442 C:Program Files (x86)43 C:Program FilesCommon Files44 C:Program Files (x86)Common Files45 C:ProgramDataMicrosoftWindowsTemplates46 C:UsersPublicDocuments47 C:ProgramDataMicrosoftWindowsStart MenuProgramsAdministrative Tools48 C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsAdministrative Tools49
50
51
52
53 C:UsersPublicMusic54 C:UsersPublicPictures55 C:UsersPublicVideos56 C:Windowsresources57 C:Windowsresources080458 C:ProgramDataOEM Links59 C:UsersAdministratorAppDataLocalMicrosoftWindowsBurnBurnMy Documents' Path: d:Documents
用函数user('~') 或者:vars('$HOME') 获取用户路径
>>> from os import path
>>> user('~')
'C:UsersAdministrator'
>>> vars('$HOME')
'C:UsersAdministrator
>>> user('~Desktop')
'C:UsersAdministratorDesktop'
>>> docPath=user('~Documents')
>>> docPath
'C:UsersAdministratorDocuments'
>>>
比较简短,但不是很方便。其对应的参数是系统路径的文本不是数字,且只是系统用户名下的默认路径。
import
def getDocPath():
return user('~Documents')
print(getDocPath())
Parser
由()从环境变量中获取路径写入.ini文件,用函数ConfigParser()来读取(需要安装configparser库)。
E:>pip install ConfigParser
Collecting ConfigParser
Downloading (19 kB)
Installing collected packages: ConfigParser
Successfully installed ConfigParser-5.0.2
import os
import configparser
def getDocPath():
("@echo [HOME]>c:")
("@set HOME>>c:")
config = Parser()
_file(open(r'c:'))
path = ("HOME","HOME")
(r'c:')
return path + 'Documents'
print(getDocPath())
用函数('HOME']) 或者n['HOME']直接获取环境变量,不用读写ini文件。
注意:两者所用括号的区别,后者不是函数而是字典,n 返回全部环境变量。
>>> import os
>>> ("HOME")
'C:UsersAdministrator'
>>> n['HOME']
'C:UsersAdministrator'
>>> n
>>>
environ({'ALLUSERSPROFILE': 'C:ProgramData', 'APPDATA': 'C:UsersAdministratorAppDataRoaming', '': 'Destination=file', 'COMMONPROGRAM
import os
def getDocPath():
return ("home")+'Documents'
def getDesktopPath():
return ("home")+'Desktop'
print(getDocPath())
print(getDesktopPath())
y
从注册表中读取,“我的文档”是个特殊键,键值为: {374DE290-123F-4565-9164-39C4925E467B}
import winreg
def getDocPath():
key = y(_CURRENT_USER,r'SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders')
return alueEx(key, "{374DE290-123F-4565-9164-39C4925E467B}")[0]
print(getDocPath())
由以下截图可以看出“桌面”可以用'Desktop'来获取;“我的文档”除了上面那个特殊值也能用'Personal'代替。
综上这么几种方法,比较倾向于推荐前二种方法! 总结代码如下:
from os import path as p
import es
def getDocPath(pathID=5):
'''默认返回我的文档路径,buf为空则返回当前工作路径'''
buf= _unicode_buffer(_PATH)
olderPathW(None, pathID, None, 0, buf)
return e(th(__file__)) if =='' else
print(getDocPath())
print(getDocPath(60))
或者:
import os
from import shell
def getDocPath(pathID=5):
'''默认返回我的文档路径,出错则返回当前工作路径'''
try:
return olderPath(0, pathID, None, 0)
except:
return e(th(__file__))
print(getDocPath())
print(getDocPath(60))


发布评论