启动脚本报错IndexError:如何修复main.py的sys.argv索引越界问题?
问题解决:批量登录机器人时的
IndexError错误 错误原因
IndexError: list index out of range本质是**main.py启动时没有收到足够的命令行参数**,根源是start.py读取账号文件时,部分行的格式解析异常,导致传给main.py的参数不足2个(用户名+密码)。常见触发场景:
accts.txt存在空行、格式错误的行(比如没有冒号分隔)- 行尾的换行符、空格被误解析为参数的一部分,导致实际参数缺失
解决方案
1. 规范账号文件格式
确保accts.txt每行严格遵循用户名:密码格式,无空行、无多余空格:
user01:passwd01 user02:passwd02 user03:passwd03
2. 修复start.py的账号读取逻辑
增加行内容清理、格式校验,避免无效行启动错误进程:
import subprocess import time accounts = [] with open("accts.txt", "r") as f: for line in f.readlines(): # 移除行首尾的换行、空格等空白字符 line_clean = line.strip() # 跳过空行 if not line_clean: continue # 分割用户名和密码 acc_parts = line_clean.split(":") # 校验格式是否正确 if len(acc_parts) != 2: print(f"跳过无效行: {line}") continue # 再次清理每个字段的空白 username = acc_parts[0].strip() password = acc_parts[1].strip() # 跳过空用户名/密码的账号 if not username or not password: print(f"跳过无效账号: {line}") continue accounts.append((username, password)) pList = [] for acc in accounts: p = subprocess.Popen(['python', 'main.py', acc[0], acc[1]]) pList.append(p) time.sleep(2)
3. 给main.py增加参数校验
在main.py开头加入参数检查,提前报错避免崩溃:
import sys # 校验命令行参数数量 if len(sys.argv) != 3: print("使用方式:python main.py <用户名> <密码>") sys.exit(1) username = sys.argv[1] password = sys.argv[2] # 后续原有代码...
内容的提问来源于stack exchange,提问作者Bacon Bacon
相关产品推荐
相关产品推荐

