You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autotyper运行报错TypeError: 'int' object is not iterable求助

解决Autotyper中第二行输入的TypeError问题

首先看你遇到的错误:TypeError: 'int' object is not iterable,这个问题的根源在你这段代码里:

try:
    line2 = 1
except NameError:
    break
else:
    for char in line2:
        # ...输入逻辑

你在try块里直接把line2赋值成了整数1,后面自然没办法对整数做遍历操作(for char in line2),而且这个异常处理的逻辑完全不符合你的需求——你本来是想判断用户有没有输入第二行(也就是line2是不是"none"),但现在的写法完全走偏了。

关键修复点

  1. 移除错误的try-except块,换成直接判断line2是否不等于"none"的逻辑,同理处理line3和line4。
  2. 修正循环终止条件:原来的timeout > future永远不会成立,因为timeout是程序启动时的固定时间戳,应该用当前时间和future比较。
  3. 完善多行输入的处理逻辑:原来的代码只处理了line1和line2,line3、line4的输入没在循环里执行。
  4. 补全缺失的导入:你用到了Key.shift和Key.enter,但代码里没导入Key类,得补上。

修正后的完整代码

import time
import random
from pynput.keyboard import Controller, Key

keyboard = Controller()

print('======Welcome to Autotyper v0.5 Currently still in development. We have a maximum of 4 lines, for bugs/suggestions email: alexanderhan00@gmail.com======')

# 初始化所有输入行
line1 = input("Please enter your first line: ")
line2 = input("Please enter your second line, type none if you don't have one: ")
# 只有上一行不是none时才询问下一行
line3 = input("Please enter your third line, type none if you don't have one: ") if line2 != "none" else "none"
line4 = input("Please enter your fourth line, This is the last line!! ") if line3 != "none" else "none"

hours = input("How many hours would you like to run this? ")
retry = input("How long will it take until new message?(Seconds) ")
# 计算程序结束的时间戳
future = time.time() + int(hours)*3600

x = 5
print('Move cursor to target')
while x > 0:
    print(int(x)*'.')
    time.sleep(1)
    x -= 1

runs = 0
while True:
    # 输入第一行
    for char in line1:
        keyboard.press(char)
        keyboard.release(char)
        time.sleep(0.1)
    # 换行(如果不需要Shift+Enter,直接用Key.enter即可)
    keyboard.press(Key.shift)
    keyboard.press(Key.enter)
    keyboard.release(Key.shift)
    keyboard.release(Key.enter)

    # 输入第二行(如果用户没输入none)
    if line2 != "none":
        for char in line2:
            keyboard.press(char)
            keyboard.release(char)
            time.sleep(0.1)
        keyboard.press(Key.shift)
        keyboard.press(Key.enter)
        keyboard.release(Key.shift)
        keyboard.release(Key.enter)

    # 输入第三行(如果用户没输入none)
    if line3 != "none":
        for char in line3:
            keyboard.press(char)
            keyboard.release(char)
            time.sleep(0.1)
        keyboard.press(Key.shift)
        keyboard.press(Key.enter)
        keyboard.release(Key.shift)
        keyboard.release(Key.enter)

    # 输入第四行(如果用户没输入none)
    if line4 != "none":
        for char in line4:
            keyboard.press(char)
            keyboard.release(char)
            time.sleep(0.1)
        keyboard.press(Key.shift)
        keyboard.press(Key.enter)
        keyboard.release(Key.shift)
        keyboard.release(Key.enter)

    runs += 1
    # 检查是否到达设定的运行时长
    if time.time() > future:
        print(f"已运行{runs}次,到达设定时长,程序结束")
        break

    # 随机延迟逻辑
    random1 = random.randint(0,10)
    print(f"Random Seconds Added: {random1}")
    wait_time = int(retry) + random1
    print(f"Time to next entry:")
    for y in range(wait_time, 0, -1):
        print(y)
        time.sleep(1)

额外说明

  • 换行逻辑:如果你的场景不需要Shift+Enter(比如普通文本框换行),直接把Shift相关的代码删掉,只保留keyboard.press(Key.enter)和keyboard.release(Key.enter)即可。
  • 运行次数统计:现在的终止逻辑优先以时间为准,更符合你设置"运行小时数"的需求。

内容的提问来源于stack exchange,提问作者CircleCzars ACFM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:24:37