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

Python文件读取时if语句致readlines()返回空列表问题求助

问题原因与解决方案

核心问题

文件对象的读取指针会随读取操作移动。f.readlines()会一次性读取文件所有行,同时将读取指针定位到文件末尾。第一次调用f.readlines()后,第二次再调用时,指针已在文件末尾,无法读取任何内容,因此返回空列表[]。

另外原代码的判断逻辑存在偏差:"MODIFIED" in f.readlines()是检查是否存在某一行完全等于"MODIFIED",而非行内包含该字符串。如果你的需求是检查文件内容中是否出现该字符串(不管是否整行),需要调整判断逻辑。

修正后的代码

情况1:检查是否有整行等于"MODIFIED"

with open(f"contents\docs.txt", "r") as f:
    lines = f.readlines()  # 一次性读取所有行到变量,后续操作复用这个变量
    if "MODIFIED" in lines:
        print("already modified")
    
    print(lines)
    print()

情况2:检查任意行是否包含"MODIFIED"字符串

with open(f"contents\docs.txt", "r") as f:
    lines = f.readlines()
    # 遍历所有行,检查是否有行包含目标字符串
    if any("MODIFIED" in line for line in lines):
        print("already modified")
    
    print(lines)
    print()

补充说明

如果不需要保留每行的列表格式,也可以直接读取整个文件内容到字符串:

with open(f"contents\docs.txt", "r") as f:
    content = f.read()
    if "MODIFIED" in content:
        print("already modified")
    
    print(content)
    print()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:33