Сегодня в конец доканало то, что на диске C: не хватает места, хотя использую 128GB SSD. Программы все устанавливаю на другой диск, перенес рабочий стол, документы... Короче сделал всё, чтобы системный диск не засрался. Но ничего не помогло. В итоге на нем осталось всего 30MB свободного места.
В поисках решения нашел скрипт (спасибо автору), который ищет файлы больше определенного размера на диске и выводит в консоль список. Проблема была в том, что скрипт написан под Python 3. Ну и неудобство в том, что вывод осуществлялся в консоль. Оттуда путь к ненужному файлу не скопируешь и в проводник не вставишь. Именно поэтому представляю всем "нуждающимся" доработанную версию данного скрипта. Тестировалось под Python 2.7.3. Вывод сохраняется в файле CleanDiskFound.txt рядом со скриптом.
from __future__ import print_function import os from errno import EACCES, EPERM, ENOENT class CleanDiskC: total=0; countFiles=0; countFolders=0; fileNotFoundError=list() permissionError=list() files=list() found_str = "%s || %s\n" def __init__(self, bigSize=50, state=True): self.found = open("CleanDiskFound.txt", "w") self.bigSize=bigSize self.stateless=state def print_error_message(self, e, file_name): #PermissionError if e.errno==EPERM or e.errno==EACCES: print("PermissionError error({0}): {1} for:\n{2}".format(e.errno, e.strerror, file_name)) if self.stateless: print("no access to folder: "+file_name) else: self.permissionError.append(file_name) #FileNotFoundError elif e.errno==ENOENT: print("FileNotFoundError error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name)) if self.stateless: print("folder doesn\"t exist: "+file_name) else: self.fileNotFoundError.append(file_name) elif IOError: print("I/O error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name)) elif OSError: print("OS error({0}): {1} as:\n{2}".format(e.errno, e.strerror, file_name)) def printRow(self, size, path): size=str(size)+"Mb" while(len(size)<8): size+=" " print("|| "+size+"|| "+path) self.found.write(self.found_str % (path, size)) def findBigFiles(self, path): if not self.stateless: print ("Progress: |", end="") self.searchBigFiles(path) if not self.stateless: if len(self.fileNotFoundError)>0: print("\n\nCan\"t find files:") print("----------------------------") for elem in self.fileNotFoundError: print(elem) print("----------------------------") print("Total: "+str(len(self.fileNotFoundError))+" elements\n") if len(self.permissionError)>0: print("\n\nDon\"t have pernission to access folder:") print("----------------------------") for elem in self.permissionError: print(elem) print("----------------------------") print("Total: "+str(len(self.permissionError))+" folders\n") print("\nFiles with size more then "+str(self.bigSize)+"Mb:") print("----------------------------") self.files.sort(key=lambda x: x["size"], reverse=True) for elem in self.files: self.printRow(elem["size"], elem["path"]) print("----------------------------") print("Total big files store: "+str(round(self.total/1024,1))+"Gb") print("Total cheched: "+str(self.countFiles)+" files") print("Total checked: "+str(self.countFolders)+" folders") self.found.close() def searchBigFiles(self, path): self.countFolders+=1 try: folder=os.listdir(path) if path=="\\": path="" for element in folder: if os.path.isfile(path+"\\"+element): self.countFiles+=1 if not self.stateless: if self.countFiles%10000==0: print(str(self.countFiles)+"|",end="") statinfo=os.stat(path+"\\"+element) if(statinfo.st_size>1024*1024*self.bigSize): size=round(statinfo.st_size/(1024*1024),1) self.total+=size if self.stateless: self.printRow(size, path+"\\"+element) else: self.files.append({"size":size, "path":path+"\\"+element}) elif os.path.isdir(path+"\\"+element): self.searchBigFiles(path+"\\"+element) except (IOError, OSError) as e: self.print_error_message(e,path) #bigSize: default=50Mb #stateless: default=True do=CleanDiskC(50, False) do.findBigFiles("\\")
далее следует разместить скрипт в корень диска и запустить:
python cleandisk.py