我的脚本与“我的文档”文件夹结合在一起,但是在Windows 7上无法获取它的路径。
第一:
我关注了this question.
os.path.expanduser(path)
但是,正如评论所说
在Windows上,os.path.expanduser('〜/ filename')调用会导致类似“ C:\ Documents and Settings \ / filename”之类的内容,而不是用户“我的文档”文件夹中某些内容的路径。
如果用户移动其“我的文档”文件夹,则将无法使用。
然后
我找到了另一个解决方案here。
似乎与mypictures文件夹一起使用时效果很好,但是如果尝试使用mydocuments,则会出现类似以下错误:
>>> print(shell.SHGetFolderPath(0, shellcon.CSIDL_MYDOCUMENTS, None, 0))
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print(shell.SHGetFolderPath(0, shellcon.CSIDL_MYDOCUMENTS, None, 0))
pywintypes.com_error: (-2147024809, 'argument error', None, None)
我对此感到困惑,因此在这里搜索了另一个question。
看来我们应该在Windows7中使用
SHGetKnownFolderPath
函数。但是我在win32com.shell中找不到此功能。
最后
我有一个可行的方法,下面回答了这个问题,但现在我有更多问题。
最佳答案
现在我发现我应该使用参数shellcon.CSIDL_PERSONAL
而不是shellcon.CSIDL_MYDOCUMENTS
。
但是我不知道为什么。
在MSDN上,据说该函数已被弃用,但它仍在pywin32中,我找不到替代函数SHGetKnownFolderPath
。
此外,CSIDL
也被KNOWNFOLDERID
值替换,并且在CSIDL
文档中CSIDL_PERSONAL
等于CSIDL_MYDOCUMENTS
。
那么,什么是现在获取Windows特殊文件夹的推荐方法?