在檢查源文件中的所有行(作爲組)是否已經存在於目標文件中之後,我有一個內容需要附加到目標文件的源文件。有條件地附加文件內容
如果它已經在目標文件中找到,我不應該再次追加,因爲它會複製目標文件中的內容。
這實質上是比較整個線段。 有沒有辦法做到這一點在Python中不使用正則表達式?
在檢查源文件中的所有行(作爲組)是否已經存在於目標文件中之後,我有一個內容需要附加到目標文件的源文件。有條件地附加文件內容
如果它已經在目標文件中找到,我不應該再次追加,因爲它會複製目標文件中的內容。
這實質上是比較整個線段。 有沒有辦法做到這一點在Python中不使用正則表達式?
src = open('source').read()
if src not in open('dest').read():
with open('dest', 'a') as dst:
dst.write(src)
非常感謝 – 2013-03-13 12:39:52
如果你可以加載在內存中的整個文件作爲一個字符串,那麼你可以簡單地使用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)
嗨,我試過你的方法。它會拋出一個錯誤文件「IOError:File not open for writing」。請幫助 – 2013-03-13 12:25:33
是的,我忘了模式。補充說明,僅僅是爲了它。 – fog 2013-03-13 14:30:50
爲什麼你認爲你應該使用正則表達式?將文件的內容加載爲字符串,並嘗試在第二個字符串中找到第一個字符串。 – khachik 2013-03-13 11:58:23
ya.you r right。謝謝你給我一個更簡單的方法。 – 2013-03-13 12:33:20