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
相关产品推荐
相关产品推荐

