我正在編寫我的第一個用於查找和刪除惡意軟件js-code的服務器腳本,但是我從一開始就找不到一個簡單的方法來重寫現有文件,而不是最後。從頭開始編寫文件
# -*- coding: utf-8 -*-
import os
import re
import codecs
for dirname, dirnames, filenames in os.walk('.'):
for filename in filenames:
f = open(os.path.join(dirname, filename), 'r+b')
text=f.read()
if re.search('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}', text) and os.path.join(filename) != "bezr.py":
print "starting with " + os.path.join(filename)
match = re.compile('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}')
s = match.sub('', text)
f.write(s)
f.close()
#else:
#print "in " + os.path.join(dirname, filename) + " none"
#f.close()
是的,我知道。但是,也許使用錯誤,如果文件包含更多文本(在我的情況下 - 必然) - 它加入到替換文本。例如:文件包含「AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA」,f.seek(0)f.write(「aa」)它將在文件中:「aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA」,而不僅僅是「aa」。 – Rukomoynikov
你忘了「f.truncate()」 – Goranek
它的工作原理,它的工作原理!非常感謝) – Rukomoynikov