如何暂停Python代码持续检测指定Excel单元格,非空后执行后续代码
实现方案
你原有代码的核心问题是未实时刷新单元格取值、缺少初始赋值和循环间隔,按以下方式修改即可实现需求:
核心问题说明
- 你写的
sum is None是条件判断语句,没有完成变量初始赋值,循环逻辑无法正常触发 - 仅在代码启动时读取了一次F3单元格的缓存值,循环过程中没有同步Excel文件的最新更新,会一直卡在死循环里
- 没有设置循环间隔,会持续占满CPU资源
- 不要用
sum作为自定义变量名,它是Python的内置函数名
xlwings 实现代码(你当前用xlwings操作的话直接用这个)
首先引入time库控制检测间隔:
import time # 初始化单元格值为None f3_value = None # 循环检测直到F3不为空 while f3_value is None: # 每次循环重新读取最新的单元格值 f3_value = ws.range("F3").value # 调整sleep的秒数即可控制检测频率,1秒是通用的平衡值 time.sleep(1) # 跳出循环后直接执行你已写好的后续dataframe加载逻辑即可
openpyxl 实现备用方案(如果你后续换用openpyxl读取需要用这个)
openpyxl不会自动同步文件更新,每次检测需要重新加载工作簿才能拿到最新值:
import time from openpyxl import load_workbook # 替换为你的Excel文件实际路径 EXCEL_PATH = "你的文件路径.xlsx" f3_value = None while f3_value is None: # 每次循环重新加载工作簿 wb = load_workbook(EXCEL_PATH, read_only=True, data_only=True) ws = wb["Sheet1"] f3_value = ws["F3"].value wb.close() time.sleep(1)
内容的提问来源于stack exchange,提问作者Nathan Breckenridge
相关产品推荐
相关产品推荐

