2017-09-29 55 views
0
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 

我想要實現的是解析RSS提要,寫他們的鏈接到一個文本文件中。但問題是,當我下次運行腳本時,它不應該返回舊的rss項目,所以我通過文本文件比較它們,除非它失敗。在第一次運行它寫入所有的鏈接,第二運行它應該返回空的,因爲所有的鏈接都是相同的,但它再次寫入相同的鏈接Python和比較文件更改

編輯:試了一整天后,

和錯誤這工作:

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() 
+0

歡迎來到SO。請花時間閱讀[問]和它包含的鏈接。 – wwii

+1

As a aside:既然您已經在使用'str.format' - '(「\ n」+「{0}」.format(k)+「\ n」)'也可以寫成'(「\ n {0} \ n」個.format(k))的'。 – wwii

回答

1

您沒有使用正確的語法來打開文件。使用這個:

g = open("db.txt","r") 
lines = xml_file.readlines() 
if k in lines: 
    print ("already exists"); 
+0

它仍然重新插入相同的結果 – fuzunspm

+0

在寫入字符串之前,OP正在格式化字符串,也許'k'需要格式化也是等效的。你可能只想調用'.readlines()'一次,並將它分配給一個名稱,而不是每個'k'都調用它。 – wwii

+0

xml_file.readline()的打印輸出僅爲第一行。 – fuzunspm