Пробовал так, но работает не правильно, т.е. нет доступа к некоторым папкам, таким как : Documents and Settings и другим подобным, как избежать эту ошибку? Использую PyScrypter. Функция FileMaskEquate была переписана с языка Delphi и усовершенствована немного. Система Windows 7 x64. Помогите найти ошибку. Заранее спасибо.
import time
import os
from os import listdir
from os.path import isfile
from os.path import join as joinpath
def FileMaskEquate(F, M):
F = F.upper()
M = M.upper()
fl, ml = len(F) - 1, len(M) - 1
mp, fp, ft = 0, 0, fl
while ft > 0 :
if F[ft] == "." :
break
ft -= 1
if ft == 0 and M == '*.' :
return 1;
while mp <= ml:
if fp > fl or mp > ml : return 0
if M[mp] == "?" :
mp += 1
fp += 1
elif M[mp] == "*":
if mp == ml :
return 1
if M[mp + 1] == F[fp]:
if F[fp] == '.' and ft != fp :
fp += 1
else :
mp += 1
elif fp == fl :
return 0
else :
fp += 1
elif F[fp] != M[mp] :
return 0
else :
fp += 1
mp += 1
return 1
def DelFilesToMask(Path):
#if not os.path.exists(Path) :
#return 0
if Path == 'c:\Documents and Settings' :
return 0
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 i in listdir(Path):
s = joinpath(Path,i)
if isfile(s):
for i in a:
if FileMaskEquate(os.path.basename(s), i) == 1:
print (s)
#os.remove(s)
else :
DelFilesToMask(s)
def main():
DelFilesToMask("c:\\")
time.sleep(3)
if __name__ == '__main__':
main()