Python和比较文件更改

Python和比较文件更改,python,rss,feedparser,Python,Rss,Feedparser,我想要实现的是解析RSS提要并将它们的链接写入文本文件。但问题是当我下次运行脚本时,它不应该返回旧的rss项目,所以我通过文本文件比较它们,除非它失败。第一次运行时它写入所有链接,第二次运行时它应该返回空,因为所有链接都相同,但它再次写入相同的链接 编辑: 经过一整天的反复试验,这种方法奏效了: d = feedparser.parse('somerssfeed/rss.xml') message = {} smessage = {} for post in d.entries: me

我想要实现的是解析RSS提要并将它们的链接写入文本文件。但问题是当我下次运行脚本时,它不应该返回旧的rss项目,所以我通过文本文件比较它们,除非它失败。第一次运行时它写入所有链接,第二次运行时它应该返回空,因为所有链接都相同,但它再次写入相同的链接

编辑:

经过一整天的反复试验,这种方法奏效了:

d = feedparser.parse('somerssfeed/rss.xml')
message = {}
smessage = {}

for post in d.entries:
    message[post.link] = post.title

fwrite = open("db.txt", "a")

for k, v in message.items():
    if k in open("db.txt", "r"):
        print("already exists")
    else:
        fwrite.write("\n" + "{0}".format(k) + "\n")
        smessage[k] = v

您没有使用正确的语法打开文件。使用以下命令:

for k, v in message.items():
    if k in open('db.txt').read():
        print('already exists')
    else:
        smessage[k] = v
        fwrite = open("db.txt", "a")
        fwrite.write('\n{0}\n'.format(k))
        fwrite.close()

它仍然在重新插入相同的结果。在写入字符串之前,op正在格式化字符串,可能
k
也需要格式化才能等效。您可能只需要调用一次
.readlines()
,并将其分配给一个名称,而不是为每个
k
”调用它。请尝试我添加的新代码,基于@wwii的注释欢迎使用。请花点时间阅读及其包含的链接。顺便说一下:由于您已经在使用
str.format
-
(“\n”+“{0}”)。format(k)+“\n”)
也可以写成
(“\n{0}\n.format(k))
g = open("db.txt","r")
lines = xml_file.readlines()
if k in lines: 
    print ("already exists");