Файл или каталог не найдены после первого цикла - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь создать программу python, которая «перезаписывает» список (который я создал ранее в программе) после ввода определенного количества слов. Я говорю «перезаписать», потому что, как только я достигну максимального числа слов, я получаю программу, которая удаляет файл, перезапускает программу и создает файл заново. Сначала программа работает нормально, но когда приходит первый l oop, я получаю файл или каталог 'History.txt', который не найден. Не уверен, почему, хотя я сам создаю файл в программе

# This creates the file and everything below the first line is formatting to it looks nice
    with open("History.txt", "a") as f:
        for key in keys:
            k = str(key).replace("'", "")
            if k.find("space") > 0:
                f.write('\n')
            elif k.find("Key") == -1:
                f.write(k)
# This defined the number of words in the list
    filename = 'History.txt'
    numWords = 0

    with open(filename, 'r') as file:
        for line in file:
            wordsList = line.split()
            numWords += len(wordsList)

РЕДАКТИРОВАТЬ: Вот некоторые воспроизводимый код. Для минимального кода это немного длинно, но on_press и write_file можно игнорировать, так как они предназначены только для форматирования слов для файла .txt. Вы заметите, что все это прекрасно работает, и файл History.txt удаляется. Но введение while l oop вызывает ошибку.

from pynput.keyboard import Key, Listener

while True:
    count = 0
    keys = []


    def on_press(key):
        global keys, count

        keys.append(key)
        count += 1

        if count >= 1:  # Starts recording keys after I press any key
            count = 0
            write_file(keys)
            keys = []


    def write_file(keys):  # This function creates spaces between words
        with open("History.txt", "a") as f:
            for key in keys:
                k = str(key).replace("'", "")
                if k.find("space") > 0:
                    f.write('\n')
                elif k.find("Key") == -1:
                    f.write(k)


    def on_release(key):
        filename = 'History.txt'
        num_words = 0

        with open(filename, 'r') as file:
            for line in file:
                words_list = line.split()
                num_words += len(words_list)

        if num_words == 5:
            import os  # I changed this from the earlier remove function but it does the same
            os.remove(filename)

            return False


    with Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()
...