Цель - прочитать html-файлы и изменить все экземпляры MyWord на Myword;за исключением того, что НЕ следует изменять слово, если оно найдено внутри или как часть пути, имени файла или сценария:
href="..."
src="..."
url(...)
class="..."
id="..."
script inline or linked (file name) --> <script ...></script>
styles inline or linked (file name) --> <link ...> <style></style>
Теперь вопрос по всем вопросам: как определить, является ли экземпляр слованаходится в состоянии, где это можно изменить?(или, как вы определяете, находится ли слово внутри одного из перечисленных выше мест и не должно быть изменено?)
Вот мой код, его можно изменить на чтение построчно и т. д., ноЯ просто не могу придумать, как определить и применить правило для соответствия выше ...
Вот оно:
#!/usr/bin/python
import os
import time
from stat import *
def fileExtension(s):
i = s.rfind('.')
if i == -1:
return ''
tmp = '|' + s[i+1:] + '|'
return tmp
def changeFiles():
# get all files in current directory with desired extension
files = [f for f in os.listdir('.') if extStr.find(fileExtension(f)) != -1]
for f in files:
if os.path.isdir(f):
continue
st = os.stat(f)
atime = st[ST_ATIME] # org access time
mtime = st[ST_MTIME] # org modification time
fw = open(f, 'r+')
tmp = fw.read().replace(oldStr, newStr)
fw.seek(0)
fw.write(tmp)
fw.close()
# put file timestamp back to org timestamp
os.utime(f,(atime,mtime))
# if we want to check subdirectories
if checkSubDirs :
dirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for d in dirs :
os.chdir(d)
changeFiles()
os.chdir('..')
# ==============================================================================
# ==================================== MAIN ====================================
oldStr = 'MyWord'
newStr = 'Myword'
extStr = '|html|htm|'
checkSubDirs = True
changeFiles()
Кто-нибудь знает как?Есть предложения?ЛЮБАЯ помощь приветствуется, бьёт мне мозг уже 2 дня и просто ничего не может придумать.