subprocess.check_output()输出与字符串匹配返回False问题求助
问题排查与解决
1. 先修正明显的拼写错误
你的return语句里写的是get4Root(),但前面获取p4status时用的是getP4Root()(少了字母P),这会导致目标字符串生成错误,自然匹配失败。修正拼写后再试:
return f'{str(getP4Root())}/{self.dev_pattern}/... - no file(s) to reconcile.' in p4status
2. 排查不可见字符或编码差异
如果拼写没问题,打印内容看起来一致但匹配失败,大概率是存在不可见字符(比如换行符、制表符、全角空格)或编码细微差异。可以用以下方法排查:
- 用
repr()打印p4status和目标字符串,查看真实的字符内容:
对比两者的输出,就能看到是否有额外的转义字符(比如target_str = f'{str(getP4Root())}/{self.dev_pattern}/... - no file(s) to reconcile.' print("p4status 真实内容:", repr(p4status)) print("目标字符串真实内容:", repr(target_str))\n、\t)或不同的字符编码。 - 检查两者的长度是否一致:
如果长度不同,说明确实存在额外字符。print(len(p4status), len(target_str))
3. 统一字符串处理逻辑
可以对两个字符串都做更严格的清理,消除潜在的格式差异:
import re def clean_string(s): # 替换所有空白字符为单个半角空格,再去除首尾空格 return re.sub(r'\s+', ' ', s).strip() cleaned_p4 = clean_string(p4status) cleaned_target = clean_string(f'{str(getP4Root())}/{self.dev_pattern}/... - no file(s) to reconcile.') return cleaned_target in cleaned_p4
内容的提问来源于stack exchange,提问作者Nishikant
相关产品推荐
相关产品推荐

