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

2024-09-21 03:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是用户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)的顶层或文档上发生。我可以在文件夹上运行得非常好(即下载,或文档中的文件夹):

^{pr2}$

经过大量挖掘,似乎这是一个权限错误。但是,即使作为管理员运行脚本,我仍然会遇到它。我已经验证了它找到的文件夹是正确的,我可以用其他方法访问文件夹,例如操作系统步行()或丑闻。

有办法绕过这个吗?这个方法是我测试过的最快的一种方法,它可以在Windows上获取目录的大小,所以我希望我仍然可以使用它。


Tags: 方法用户文档文件夹mbfolder解决方案users
1条回答
网友
1楼 · 发布于 2024-09-21 03:27:11

在我的机器上进行的实验表明,这似乎与两个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),您可以沿着层次结构向下遍历,在可能的情况下求出文件夹大小,直到找到无法导航到的位置(即交叉点)。在

相关问题 更多 >

    热门问题