我的脚本与“我的文档”文件夹结合在一起,但是在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特殊文件夹的推荐方法?

08-25 03:23