You need to enable JavaScript to run this app. 如何实现每次触发时从文件读取下一行内容的闪卡程序功能
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每次触发时从文件读取下一行内容的闪卡程序功能

现有代码问题说明

  1. 第一段无效代码问题:
  • 函数内部的with open语句缺少缩进,存在语法错误无法正常运行
  • 遍历文件对象时同时调用next(f),会导致每次循环跳过1行,实际每轮读取2行内容
  • 判断逻辑if 'A' == line.strip()仅会在某行内容恰好为A时才打印下一行,和你的需求完全不符
  1. 第二段代码的缺陷:
  • 每次调用函数都会重新打开文件,计数变量每次从0开始计算,没有记录上次读取的位置,所以永远只会输出固定行内容

实现方案

闪卡场景单词量级一般不大,最简单的实现方式是程序启动时一次性将所有单词、释义加载到内存,用索引变量记录当前读取位置,每次调用函数时索引自增即可,具体代码如下:

# 全局变量,程序启动时初始化
word_list = []
definition_list = []
current_index = 0

# 预加载单词和释义数据,程序启动时仅需执行1次
def load_resource():
    global word_list, definition_list
    # 加载单词列表,自动过滤空行
    with open('Words.txt', 'r', encoding='utf-8') as f:
        word_list = [line.strip() for line in f if line.strip()]
    # 加载释义列表,格式和单词文件完全一致
    with open('Definitions.txt', 'r', encoding='utf-8') as f:
        definition_list = [line.strip() for line in f if line.strip()]

# 点击按钮时调用的函数
def nextWord():
    global current_index
    # 读完所有单词后的处理,要循环背的话可以把current_index重置为0
    if current_index >= len(word_list):
        print("已完成所有单词的学习")
        return
    # 读取当前单词和对应释义
    current_word = word_list[current_index]
    current_def = definition_list[current_index]
    # 此处可替换为你闪卡界面的展示逻辑,当前为测试打印
    print(f"单词:{current_word}")
    print(f"释义:{current_def}")
    # 索引+1,下次调用自动取下一组
    current_index += 1

使用说明

  • 程序启动时先调用一次load_resource()完成数据加载
  • 每次点击闪卡的下一个按钮,直接调用nextWord()即可按顺序展示下一组单词和释义
  • 如果你的词库量级极大(十万条以上)不想占用过多内存,可以用文件对象的tell()方法记录读取偏移量,将偏移量存在本地临时文件中,每次调用函数时用seek()跳转到对应位置读取即可,也能实现断点续读的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:00:03