Я использую решение, опубликованное пользователем Augustin здесь: очень быстро получает общий размер папки
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 \ (пользователь) на верхнем уровне или в Документах.Я могу прекрасно запустить его на папках, расположенных ниже (например, Загрузки или папки в Документах):
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, поэтому я надеюсь, что смогу его использовать.