如何获得我的文档' python的文件夹路径?

时间:2014-11-18 06:12:05

标签: python pywin32

我的脚本与“我的文档”相结合。文件夹,但我无法在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中找到这个功能。

最后

我找到了一种方法可以解决下面的问题,但我现在得到了更多的问题。

1 个答案:

答案 0 :(得分:1)

现在我发现我应该使用参数shellcon.CSIDL_PERSONAL而不是shellcon.CSIDL_MYDOCUMENTS 但我不知道为什么。

在MSDN上,该函数据说已被弃用,但它仍然在pywin32中,我找不到替代函数SHGetKnownFolderPath

此外,CSIDL也被KNOWNFOLDERID值取代,CSIDL文档CSIDL_PERSONAL中的CSIDL_MYDOCUMENTS等于{{1}}。

那么现在推荐获取Windows特殊文件夹的方法是什么?