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

Python中with open读取文件异常,pyautogui操作Zmodem失效求助

问题排查与修复方案

一、文件读取与匹配逻辑核心错误

  • 丢失关键行内容
    代码先执行content = file.readline()读取了BOOT.TXT的第一行V100,后续for content in file仅遍历剩余行,导致V100这个核心标识完全没参与判断逻辑。
  • 匹配逻辑完全不成立
    你将type_100 + V10E + version_21127拼接成一个长字符串,再判断它是否存在于某一行中。但BOOT.TXT里每个标识都是单独一行的,比如V100在第一行、Hardware: 5.01在第五行,这个拼接后的字符串不可能出现在任何一行,所以永远触发不了分支条件。

修复后的文件读取逻辑:

with open('I:\\VT\\N Testing\\Config\\BOOT.TXT', 'r', encoding='utf-8') as file:
    content = file.read()  # 读取文件全部内容
    type_100 = 'V100'
    V10X = 'Hardware: 4.01'
    V10E = 'Hardware: 5.01'
    version_21127 = 'Firmware: 2.1.12.7'
    
    # 同时检查多个标识是否存在于文件中
    if type_100 in content and V10E in content and version_21127 in content:
        pyautogui.typewrite(r'ZmTest.exe -port:4 -send I:\VT\firmware\2.1.12.7\E\vware.dat') 
        pyautogui.press('return')
        time.sleep(0.6)
    elif type_100 in content and V10X in content and version_21127 in content:
        pyautogui.typewrite(r'ZmTest.exe -port:4 -send I:\VT\firmware\2.1.12.7\X\fware.dat')
        pyautogui.press('return')
        time.sleep(0.6)

二、Command Prompt窗口未激活导致指令发送失败

用os.system('start cmd')启动新窗口后,没有确保窗口处于激活状态,pyautogui的按键指令大概率发送到了你的Python IDE或其他窗口,Zmodem根本没收到命令。

修复方案(需先安装pygetwindow:pip install pygetwindow):

import pygetwindow as gw

os.system('start cmd')
time.sleep(1)
# 定位并激活cmd窗口(标题根据系统语言调整,中文为"命令提示符")
cmd_windows = gw.getWindowsWithTitle("Command Prompt")
if cmd_windows:
    cmd_window = cmd_windows[0]
    cmd_window.activate()

三、路径转义字符错误

代码中路径字符串如'cd I:\VT\ZmodemTest'里的\V、\Z会被Python解析为转义字符,导致实际执行的cd命令路径错误,后续启动ZmTest.exe也会失败。

修复方案:
使用原始字符串(前缀加r)或双斜杠表示路径:

# 原始字符串写法(推荐)
pyautogui.typewrite(r'cd I:\VT\ZmodemTest')
# 或双斜杠写法
pyautogui.typewrite('cd I:\\VT\\ZmodemTest')

四、其他优化点

  • 打开文件时显式指定encoding='utf-8',避免系统默认编码导致的读取乱码;
  • 变量定义无需额外加括号,比如type_100 = 'V100'即可,括号完全多余;
  • 如果只有一个cmd窗口,也可以用pyautogui.hotkey('alt', 'tab')快速切换激活,作为窗口定位的替代方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:03:15