如何在Python中为逐行读文件的for循环添加暂停/恢复功能
实现CSV读取循环的暂停/恢复功能
要实现暂停/恢复功能,你需要新增一个状态标志来控制暂停,同时调整循环逻辑以处理暂停等待的情况。以下是修改后的完整方案:
步骤1:添加暂停状态标志
和现有的running标志一样,用列表存储可变的暂停状态:
running = [True] paused = [False]
步骤2:修改CSV读取循环逻辑
更新csv_exe函数,在循环中加入暂停等待的处理,同时保证GUI界面不会冻结:
import time import csv def csv_exe(): with open(file_path.get(), 'r') as file: data = csv.reader(file, delimiter=',') for line in data: lines = line # 检测终止命令,直接退出循环 if not running[0]: break # 进入暂停等待:保持循环直到暂停解除或收到终止命令 while paused[0] and running[0]: root.update() # 更新GUI,避免界面卡死 time.sleep(0.1) # 降低CPU占用率 # 如果在暂停期间收到终止命令,退出循环 if not running[0]: break # 处理当前行数据 sendmMsg.set(lines) print(lines) time.sleep(0.5)
步骤3:添加按钮回调函数
为暂停/恢复按钮和终止按钮分别编写回调:
# 终止按钮:停止循环并解除暂停 def stop_loop(): running[0] = False paused[0] = False # 暂停/恢复按钮:切换暂停状态 def toggle_pause(): paused[0] = not paused[0]
关键说明
- 用列表存储状态标志是因为列表是可变对象,外部修改后函数内部能实时获取最新值
- 暂停等待时调用
root.update()确保GUI正常响应,短时间sleep避免CPU空转 - 终止按钮必须同时解除暂停,防止程序卡在等待循环里无法退出
内容的提问来源于stack exchange,提问作者Arian P
相关产品推荐
相关产品推荐

