Я пытаюсь написать фрагмент кода, чтобы сообщить мне, насколько велик каталог, чтобы я мог видеть, хочу ли я его удалить. Я столкнулся с ошибкой в заголовке, когда тестировал этот фрагмент кода.
import os
class File_Manager:
def __init__(self):
pass
def find_size(self, path):
assert type(path) == str, "Path should be a string"
size = 0
if os.path.isdir(path):
for root, dirs, files in os.walk(path, topdown=False):
for file in files:
size += os.stat(f"{root}\{file}", follow_symlinks=False).st_size
size = self.convert_size(size)
elif os.path.isfile(path):
stats = os.stat(path)
size = self.convert_size(stats.st_size)
return size
def convert_size(self, num):
size_ext = {0:"B", 1:"KB", 2:"MB", 3:"GB", 4:"TB"}
ext_num = 0
while num > 1024:
num /= 1024
ext_num += 1
return f"{int(num)}{size_ext[ext_num]}"
manager = File_Manager()
a = manager.find_size("C:\\")
print(a)
Ожидаемый результат:
[somesize] GB
Фактический результат:
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Windows\\servicing\\LCU\\Package_for_RollupFix~31bf3856ad364e35~amd64~~18362.836.1.6\\amd64_microsoft-windows-a..g-whatsnew.appxmain_31bf3856ad364e35_10.0.18362.752_none_cf994d2ae256d6d5\\f\\new360videossquare44x44logo.targetsize-16_altform-unplated_contrast-black.png'
Когда я следую по пути в проводнике файлов, он там. Когда я открываю вкладку свойств, я получаю следующее расположение: C: \ Windows \ servicing \ LCU \ PACKAG ~ 1.6 \ AM2317 ~ 1.752 \ f " и это как файл: new360videossquare44x44lo go .targetsize-16_altform-unplated_contrast-black.png который при соединении не выглядит как путь в ошибке. os.stat
работает с путем в ошибке до тех пор, пока я не добавлю имя файла
Пример. os.stat('C:\\Windows\\servicing\\LCU\\Package_for_RollupFix~31bf3856ad364e35~amd64~~18362.836.1.6\\amd64_microsoft-windows-a..g-whatsnew.appxmain_31bf3856ad364e35_10.0.18362.752_none_cf994d2ae256d6d5\\f')
работает. os.expanduser
мне тоже не помогает. Просто добавляю это туда, потому что я что-то читал о необходимости расширения каталога пользователя. Также файл на диске равен 0, я читал, это означает, что это было резидентный файл. Я не знаю, имеет ли это какое-либо значение, но это то, что я обнаружил, пытаясь решить эту проблему. Мне было интересно, может ли кто-нибудь сказать мне, почему я получаю эту ошибку, если файл существует, и можете ли вы мне помочь устраните эту ошибку.