Python IOError: Errno 13 Odmowa zezwolenia

Ok, jestem całkowicie zaskoczony. Pracowałem nad tym całą noc i nie mogę go uruchomić. Mam przesłankę, by zajrzeć do pliku, wszystko, co chcę zrobić, to przeczytać tę cholerną rzecz. Za każdym razem, gdy próbuję, otrzymuję:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    scan('test', rules, 0)
  File "C:\Python32\PythonStuff\csc242hw7\csc242hw7.py", line 45, in scan
    files = open(n, 'r')
IOError: [Errno 13] Permission denied: 'test\\test'

Oto mój kod. Jest niedokończona, ale czuję, że powinienem przynajmniej uzyskać poprawne wartości dla sekcji, które testuję. Zasadniczo chcę zajrzeć do folderu, a jeśli istnieje skanowanie plików, szuka tego, co ustawięsignatures do. Jeśli są foldery, będę je skanował lub nie będę skanował w zależności oddepth określony. Jeśli tam jestdepth < 0 wtedy wróci. Jeślidepth == 0 następnie skanuje elementy w pierwszym folderze. Jeślidepth > 0 skanuje foldery do określonej głębokości. Nic z tego nie przyszło do głowy, ponieważ z jakiegoś powodu nie mam pozwolenia na odczytanie tego pliku. Nie mam pojęcia, co robię źle.

def scan(pathname, signatures, depth):
'''Recusively scans all the files contained in the folder pathname up
until the specificed depth'''
    # Reconstruct this!
    if depth < 0:
        return
    elif depth == 0:
        for item in os.listdir(pathname):
            n = os.path.join(pathname, item)
            try:
                # List a directory on n
                scan(n, signatures, depth)
            except:
                # Do what you should for a file
                files = open(n, 'r')
                text = file.read()
                for virus in signatures:
                    if text.find(signatures[virus]) > 0:
                        print('{}, found virus {}'.format(n, virus))
                files.close()

Szybka edycja:

Poniższy kod robi coś bardzo podobnego, ale nie mogę kontrolować głębi. Jednak działa dobrze.

def oldscan(pathname, signatures):
    '''recursively scans all files contained, directly or
       indirectly, in the folder pathname'''
    for item in os.listdir(pathname):
        n = os.path.join(pathname, item)
        try:
            oldscan(n, signatures)
        except:
            f = open(n, 'r')
            s = f.read()
            for virus in signatures:
                if s.find(signatures[virus]) > 0:
                    print('{}, found virus {}'.format(n,virus))
            f.close()

questionAnswers(1)

yourAnswerToTheQuestion