2017-09-29 19 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とファイルの比較を比較する

:すべてのリンクが同じであるが、それは同じリンクを再度

EDITを書き込むための最初の実行では、それはそれは空を返す必要がありセカンドラン、すべてのリンクを書き込みます。

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

ようこそ。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

+1

脇に: 'str.format' - '( "\ n" + "{0}"。format(k)+ "\ n") 'は'( "\ n {0} \ n "。形式(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