Python 3 : win32com object. 大小抛出异常 (pywintypes.com_error)

标签 python python-3.x pywin32 win32com

我在这里使用用户 Augustin 发布的解决方案:very quickly getting total size of folder

folderPath = r"C:\Users\e46ldc\Documents"
fso = com.Dispatch("Scripting.FileSystemObject")
folder = fso.GetFolder(folderPath)

MB = 1024 * 1024.0
print("%.2f MB" % (folder.Size / MB))

发生的异常如下,并且只发生在顶层的C:\Users\(user),或者Documents上。我可以在更下方的文件夹(即下载或文档中的文件夹)上完美运行它:

Traceback (most recent call last):
  File "C:\Users\e46ldc\AppData\Local\Programs\Python\Python37-32\win32dirinfo.py", line 14, in <module>
    print("%.2f MB" % (folder.Size / MB))
  File "C:\Users\e46ldc\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146828218), None)

经过大量挖掘,这似乎是一个权限错误。但是,即使以管理员身份运行脚本,我仍然会遇到它。我已经验证它找到了正确的文件夹,并且我可以使用其他方法(如 os.walk() 或 scandir)正常访问该文件夹。

有什么办法解决这个问题吗?这种方法是我测试过的最快的获取 Windows 目录大小的方法,所以我希望我仍然可以使用它。

最佳答案

在我的机器上进行实验,这似乎与两个 junction points 的权限相关联:

C:\Users\Adam\AppData\Local\Microsoft\Windows\INetCache\Content.IE5

指向

C:\Users\Adam\AppData\Local\Microsoft\Windows\INetCache\IE

C:\Users\Adam\AppData\Local\Microsoft\Windows\INetCache\Low\Content.IE5

指向

C:\Users\Adam\AppData\Local\Microsoft\Windows\INetCache\Low\IE]

奇怪的是,这两个目的地都是可访问的,因此它是路口的访问权限而不是它们的目的地。

This answer讨论了这个特定文件的问题。

This answer解释了 Size 属性的工作原理以及它在遇到没有足够权限的文件夹时失败的原因。看起来 Size 正试图遍历连接点,但由于连接权限而未能完成。

此问题的解决方案可能取决于您对包括 AppData 在内的用户配置文件文件夹大小的要求。如果您不关心 AppData,那么您可以将所有子目录的大小相加。

或者,如果您确实需要 AppData 的大小,那么您可以获得所有文件夹(包括 AppData)的大小,对于那些出错的文件夹(可能只是 AppData),您可以向下遍历层次结构,尽可能对文件夹大小求和,直到你撞到了你无法导航到的东西(即路口)。

关于Python 3 : win32com object. 大小抛出异常 (pywintypes.com_error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54657578/

相关文章:

python - 如何使用文件目录构建 setup.py

python - 验证 python 数据类中的详细类型

Python jsonschema 不标记日期时间错误

python - 使用 Python pywin32 将击键发送到交互式 win32 控制台应用程序

python - Windows 的 Python 服务有几个问题

python - 如何自动更新pywin32?

python - AttributeError: 'NoneType' 对象没有属性 'add'

python - csv 模块返回第一列的 BOM

python - 如何在Python环境中测试目标代码。输入首选测试用例

python-3.x - 按索引自然排序 Pandas 数据帧