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