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

树莓派标签打印系统:如何从TXT逐行读取更新变量

解决Python读取TXT文件绑定变量并触发更新标签的问题

核心思路

每次触发按钮事件时,按固定顺序读取TXT文件的每一行,将内容对应绑定到指定变量,再执行标签打印逻辑。

实现代码

1. 编写读取TXT文件的函数

这个函数负责按顺序读取文件行,映射到对应的变量名:

def load_label_variables(file_path):
    # 定义变量名顺序,必须和TXT文件每行内容一一对应
    var_names = ['pr', 'pn', 'cp', 'pd', 'bq', 'co', 'ma', 'mo', 'ln', 'maxbox']
    label_vars = {}
    
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            # 读取所有行并去除首尾空白(包括换行符)
            lines = [line.strip() for line in f.readlines()]
            
            # 校验行数是否匹配变量数量
            if len(lines) != len(var_names):
                print(f"警告:文件行数({len(lines)})与变量数({len(var_names)})不匹配,使用空值填充")
                for name in var_names:
                    label_vars[name] = ""
                return label_vars
            
            # 绑定每行内容到对应变量
            for name, value in zip(var_names, lines):
                label_vars[name] = value
                
    except FileNotFoundError:
        print(f"错误:未找到文件 {file_path}")
        for name in var_names:
            label_vars[name] = ""
    except Exception as e:
        print(f"读取文件出错:{str(e)}")
        for name in var_names:
            label_vars[name] = ""
    
    return label_vars

2. 在按钮事件中调用读取函数并打印标签

修改你的buttonEvent函数,每次触发时重新读取文件更新变量:

def buttonEvent():
    # 替换为你的TXT文件实际路径(比如Apache托管的PHP写入路径,如/var/www/html/label_data.txt)
    txt_file_path = '/var/www/html/label_data.txt'
    
    # 加载最新的标签变量
    label_vars = load_label_variables(txt_file_path)
    
    # 提取变量(按需使用)
    pr = label_vars['pr']
    pn = label_vars['pn']
    cp = label_vars['cp']
    pd = label_vars['pd']
    bq = label_vars['bq']
    co = label_vars['co']
    ma = label_vars['ma']
    mo = label_vars['mo']
    ln = label_vars['ln']
    maxbox = label_vars['maxbox']
    
    # 执行你的标签打印逻辑,替换为你原有的生成标签代码
    # 示例:print_label(pr, pn, cp, pd, bq, co, ma, mo, ln, maxbox)
    print_label(pr, pn, cp, pd, bq, co, ma, mo, ln, maxbox)

关键注意事项

  • 文件格式一致性:确保PHP写入TXT文件时,严格按照pr、pn、cp...maxbox的顺序每行写入一个值,不要出现多余空行或换行符。
  • 文件权限设置:Apache的www-data用户写入文件后,要保证运行Python脚本的用户(比如pi)有读取权限。可以通过设置文件权限为664,或者将Python脚本以www-data用户运行(比如用systemd服务配置)。
  • 错误处理:代码中加入了基础的错误捕获,你可以根据实际需求扩展(比如记录日志、触发警报等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:24:29