调用get_instance_id获取实例ID后,if判断中实例ID与文件名不匹配问题
实例ID与文件名匹配失败排查方案
问题场景
调用instance_ID = get_instance_id()获取实例ID列表后,执行if instance == filename判断时无匹配结果,但取消打印注释#print("{} - {}".format(instance,filename))后,肉眼可见实例ID和文件名内容一致。相关代码:
def main(): instance_ID = get_instance_id() #print(instance_ID) os.chdir(f'{basedir}/../config/') config_dir = Path() for file in config_dir.glob(f"**/*.yaml"): for instance in instance_ID: filename = file.stem #print("{} - {}".format(instance,filename)) if instance == filename: print(instance) if __name__ == '__main__': main()
排查与解决方法
- 处理隐形空白字符:肉眼看不到的空格、换行、制表符是常见元凶,直接用
strip()去除前后空白后再比较:if instance.strip() == filename.strip(): print(instance) - 统一大小写:如果实例ID和文件名存在大小写差异(比如
WebServer和webserver),统一转成小写或大写后对比:if instance.lower() == filename.lower(): print(instance) - 打印字符编码确认:如果前两种方法无效,打印每个字符的ASCII编码,精准定位差异:
# 在判断前添加这两行 print(f"Instance [{instance}] chars: {[ord(c) for c in instance]}") print(f"Filename [{filename}] chars: {[ord(c) for c in filename]}") - 验证
get_instance_id()返回值:取消#print(instance_ID)的注释,检查返回的列表元素是否带了额外字符(比如引号、多余后缀)。
内容的提问来源于stack exchange,提问作者ssarwar
相关产品推荐
相关产品推荐

