Nikfelпроверил у себя - то же самое
Выдаёт отказано в доступе.
делай через try … except … с отловом PermissionError
Nikfelда, это непонятно что
и там нет доступа к некоторым папкам или это даже не папки, а ярлыки
Nikfelпроверил у себя - то же самое
Выдаёт отказано в доступе.
Nikfelда, это непонятно что
и там нет доступа к некоторым папкам или это даже не папки, а ярлыки
# coding: cp1251 import os, fnmatch, ctypes from os import listdir from os.path import isfile from os.path import join as joinpath SHERB_NOCONFIRMATION = 1 SHERB_NOPROGRESSUI = 2 SHERB_NOSOUND = 4 def EmptyRecycleBin(options=SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND): ctypes.windll.shell32.SHEmptyRecycleBinA(None, None, options) fil = open('error_Delete.log', 'w') def ClearFolder(Path): for root, dirs, files in os.walk(Path): for name in files: strName = os.path.join(root, name) if isfile(strName) : try: if os.path.exists(strName) : print ('Удаление : ' + strName) os.remove(strName) except PermissionError: fil.write(strName + '\n') continue def DelFilesToMask(Path): a = ["*.diz", "*.tmp", "*.temp", "*.chk", "*.old", "*.gid", "*.nch", "*.wbk", "*.fts", "*.ftg", "*.$$$", "*log.txt", "*.err", "*.---", "*.~*", "~*.*", "*.??$", "*.___", "*.log", "*.~mp", "*._mp", "*.dmp", "*.prv", "*.sik", "*.bak", "thumbs.db", "CHKLIST.MS", "*.ilk", "*.aps", "*.ncb", "*.pch", "*.$db", "*.?$?", "*.??~", "*.?~?", "*.db$", "*.^", "*._dd", "*._detmp", "chklist.*", "mscreate.dir", "log*.txt", "*.log?"] for root, dirs, files in os.walk(Path): for name in files: strName = os.path.join(root, name) for i in a: if fnmatch.fnmatch(os.path.basename(strName), i): try: if os.path.exists(strName) : print ('Удаление : ' + strName) os.remove(strName) except PermissionError: fil.write(strName + '\n') continue def main(): tmp = os.path.expandvars('%TEMP%') temp = os.path.expandvars('%SystemRoot%\TEMP') print("Очистка \n\n" + tmp + '\n') ClearFolder(tmp) print('\n' + temp + '\n') ClearFolder(temp) print("\nОчистка корзины \n") EmptyRecycleBin(options=SHERB_NOCONFIRMATION) print("Очистка файлов на диске C: \n") DelFilesToMask('c:\\') print("Завершено") fil.close() if __name__ == '__main__': main()
Nikfeltry … except … - медленная конструкция, поэтому лучше через проверки делать
Не достаток в медлительности процесса
Nikfelпо скорости разработки питон быстрее
По нормальному похоже код можно написать только в c++ или в делфи
Nikfelя по нормальному пишу на Питоне. А если вы хотите сказать о быстродействии, то компилируемые языки быстрее интепретируемых - это милион раз не новость, а ассемблер вероятнее еще быстрее чем с/с++.
По нормальному похоже код можно написать только в c++ или в делфи и других языках программирования.
py.user.next+1. Nikfel
у тебя, к примеру, если файл не может быть удалён, продолжают проверяться остальные маски для него
и проверяется существование файла, когда он и так найден как существующий
py.user.nextна самом деле зависит от ситуации (входных данных). У меня был случай когда эта конструкция работала ощутимо быстрее нежели проверки. Речь там шла о переводе строки в целочисленное целое большого числа строк. try ..except вышло по времени выгоднее чем str.isdigit(). Но опять таки - все зависит от входных данных, в ином случае картина может быть диаметрально противоположной.
try … except … - медленная конструкция, поэтому лучше через проверки делать
NikfelВам правильно сказали
Не достаток в медлительности процесса, но зато работает
py.user.nextПопробуйте так:
тебе надо подтянуть алгоритмизацию
import fnmatch import os import re def delete_files_by_mask(root, masks): root = os.path.abspath(root) pattern = re.compile("|".join(map(fnmatch.translate, masks)), re.I).match for path, dirs, files in os.walk(root): for name in filter(pattern, files): try: filename = os.path.join(path, name) os.remove(os.path.join(path, filename)) except OSError as e: print("{}: {}".format(e.strerror, filename)) masks = ["*.diz", "*.tmp", "*.temp", "*.chk", "*.old", "*.gid", "*.nch", "*.wbk", "*.fts", "*.ftg", "*.$$$", "*log.txt", "*.err", "*.---", "*.~*", "~*.*", "*.??$", "*.___", "*.log", "*.~mp", "*._mp", "*.dmp", "*.prv", "*.sik", "*.bak", "thumbs.db", "CHKLIST.MS", "*.ilk", "*.aps", "*.ncb", "*.pch", "*.$db", "*.?$?", "*.??~", "*.?~?", "*.db$", "*.^", "*._dd", "*._detmp", "chklist.*", "mscreate.dir", "log*.txt", "*.log?"] delete_files_by_mask(r"c:\", masks)
import win32api import win32con #win32file.MoveFileEx("test.txt", "test2.txt" , win32file.MOVEFILE_DELAY_UNTIL_REBOOT)#переименование win32api.MoveFileEx("C:\\san.txt", None, win32con.MOVEFILE_DELAY_UNTIL_REBOOT)#удаление
py.user.nextС этим согласен. Просто я не давно начал изучать питон самостоятельно и внимательности не хватает. Мне больше нравится язык Delphi и C++.
тебе надо подтянуть алгоритмизацию
JOHN_16Со всеми основами языка питон я ещё не разобрался для этого. Подозреваю что скорость моего кода мала из-за того что много циклов использую, наверно можно найти способ проще, но для этого нужно глубже изучить питон.
если вас не устраивает скорость работы вашего кода, то вам нужно делать профилирование, для выявления “узких” мест. И далее оптимизировать код.