For循环嵌套While循环实现文件名匹配功能时不生效问题排查
问题原因
1. 文件名列表读取逻辑错误
你直接用open('files_list.txt', 'r').read()把整个文件内容读成了一整串字符串,没有按行拆分得到真实的文件名列表。此时file_name in file_names的判断逻辑是:只要拼接的字符串是整个文本的子串就返回真,不需要它是某个真实文件名的前缀。
你拼接上-5.00后的字符串刚好是你读取的长文本的某个子串(比如跨了两个文件名的位置,或者刚好是某个无关内容的子串),所以file_name in file_names判定为真,自然不会触发while循环。
2. 代码存在语法错误
你if分支里的打印语句少写了一个右括号:
# 你的错误写法 print(f'File name: {file_name} is matching! Adding {filename_components[n+1]) # 正确写法应该多一个闭合括号 print(f'File name: {file_name} is matching! Adding {filename_components[n+1]}')
这个语法错误会导致if分支执行时直接抛出异常,如果你代码里有异常捕获逻辑吞掉了报错,就会出现if分支没执行、while循环因为条件不满足也不执行的情况。
3. 边界判断缺失
你没有限制每次拼接后的字符串必须是真实文件名的前缀,哪怕误判为匹配后,后续拼接组件时很容易出现file_name in file_names一直为真,但永远拼不出完整文件名的情况。
内容的提问来源于stack exchange,提问作者Francisco Mendez Trujillo
相关产品推荐
相关产品推荐

