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

Python新手求助:读取TXT文件到列表后内容为空的原因

问题原因与解决方法

你的代码读取文件得到空列表,核心问题出在文件打开模式上:

你用了w+模式打开文件,这个模式的行为是:打开文件时会先清空原有内容,再开启读写权限。所以你原本存在list.txt和completed.txt里的内容,在执行open('list.txt','w+')的时候就被清空了,后续readlines()自然读不到任何内容。

正确的处理方式

读取已有文件时,应该用只读模式r(这也是open函数的默认模式,可以省略不写);如果需要同时读写但不想清空原有内容,才考虑用r+模式。这里你只需要读取文件内容,用r模式完全足够。

修正后的代码

import os

# 检查并创建Albums目录,修正原代码小问题:os.listdir需要调用函数,即os.listdir()
T = "Albums"
if T not in os.listdir():
    os.mkdir("Albums")

# 用只读模式读取文件
with open('list.txt', 'r') as f:
    linesA = f.readlines()
    # 可选:如果要去掉每行末尾的换行符,改成 linesA = [line.strip() for line in f]
    print(linesA)  

with open('completed.txt', 'r') as t:
    linesB = t.readlines()
    print(linesB)  

# 移除重复项
for i in linesA[:]:
    if i in linesB:
        linesA.remove(i)

print(linesA)
print(linesB)

补充说明:readlines()会保留每行末尾的换行符\n,如果你的需求是对比纯文本内容(比如只对比"A"而非"A\n"),可以在读取时通过列表推导式去掉换行符:

linesA = [line.strip() for line in f]
linesB = [line.strip() for line in t]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:20:27