自动输入长文本时,Python 由于“内存错误:堆栈溢出”而崩溃

问题描述 投票:0回答:1

我正在尝试使用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,这不是最新版本。

python out-of-memory stack-overflow pyautogui pynput
1个回答
0
投票

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) # 在咬东西之间休息一下

我不确定,它会起作用,但你可以尝试

© www.soinside.com 2019 - 2024. All rights reserved.