Я пытаюсь создать программу 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()