2013-03-13 90 views
0

在檢查源文件中的所有行(作爲組)是否已經存在於目標文件中之後,我有一個內容需要附加到目標文件的源文件。有條件地附加文件內容

如果它已經在目標文件中找到,我不應該再次追加,因爲它會複製目標文件中的內容。

這實質上是比較整個線段。 有沒有辦法做到這一點在Python中不使用正則表達式?

+0

爲什麼你認爲你應該使用正則表達式?將文件的內容加載爲字符串,並嘗試在第二個字符串中找到第一個字符串。 – khachik 2013-03-13 11:58:23

+0

ya.you r right。謝謝你給我一個更簡單的方法。 – 2013-03-13 12:33:20

回答

2
src = open('source').read() 
if src not in open('dest').read(): 
    with open('dest', 'a') as dst: 
     dst.write(src) 
+0

非常感謝 – 2013-03-13 12:39:52

0

如果你可以加載在內存中的整個文件作爲一個字符串,那麼你可以簡單地使用count

import os 

f = open("the_file_name", 'r+') 
s1 = "the block of text\nwith newlines!\nyou will search in the file" 
s2 = f.read() # s2 now has the whole file 
if s2.count(s1) > 0: 
    # seek to end and append s1 
    f.seek(0, os.SEEK_END) 
    f.write(s1) 
+0

嗨,我試過你的方法。它會拋出一個錯誤文件「IOError:File not open for writing」。請幫助 – 2013-03-13 12:25:33

+0

是的,我忘了模式。補充說明,僅僅是爲了它。 – fog 2013-03-13 14:30:50