我正在尝试使用Python制作一个“自动打字机”,您可以在其中向程序提供文本,当您按下NumLock时,它会为您键入所有内容:
# Modules:
import keyboard
from pynput.keyboard import Controller
import time
text = open('text.txt', 'r', encoding='utf8').read() # Reading the file with the text
onoff = True # Boolean to run the code only once
# Main function
def execute():
global onoff
if onoff:
for i in text: # For each char (i) of the text
Controller().press(i) # Type the char
time.sleep(0.001) # Delay
onoff = False
keyboard.add_hotkey('numlock', execute) # Press NumLock
keyboard.wait('esc')
文本本身存储在文件中“text.txt”并且它很长(它是字符“a”重复3000次的序列),但是当我执行它时,它仅适用于短时间。文本输入到某个点后突然停止,因为“内存错误:堆栈溢出”。
我搜索了此类错误,所以我知道这是关于“超出内存容量”,但我只是找不到解决方法。我尝试了不同的方法,例如 PyAutoGUI (它无法输入外来字符,因此它无法按预期方式工作) 或将文本存储在 更简单的变量中,但没有任何效果。我也尝试过较短的文本,它工作正常,但这个程序的重点是输入长文本。 我需要一些帮助来找到解决此问题的方法,即使我需要更改整个代码以使其更加优化,但它需要处理不同类型的字符,例如“ç”、“é”、“ã” ”等等
我使用的是一台相当旧的计算机和Python 3.8.10,这不是最新版本。
pythonCopydef text_nibbler(file, bite_size=1000):
while bite := file.read(bite_size):
yield bite
text_nibbler(open('text.txt', 'r',encoding='utf-8')) 中的一些内容: type_it_out(少量) time.sleep(0.1) # 在咬东西之间休息一下
我不确定,它会起作用,但你可以尝试