我想寫一個代碼來插入一個文本文件,其中包含一些必須插入到HTML文件頭部分的代碼集。我不想手動這樣做,因爲我在一個文件夾中有100個HTML文件。是否可以在文件的指定位置插入一些文本?
是否可以告訴我的代碼搜索Head標籤並在其下面附加給定的文本文件?
我們該怎麼做?
我想寫一個代碼來插入一個文本文件,其中包含一些必須插入到HTML文件頭部分的代碼集。我不想手動這樣做,因爲我在一個文件夾中有100個HTML文件。是否可以在文件的指定位置插入一些文本?
是否可以告訴我的代碼搜索Head標籤並在其下面附加給定的文本文件?
我們該怎麼做?
如果你可以使用sed
,這可能是你可以考慮的解決方案:
for file in *.html; do sed -i.bak '/<head>/a\ADD YOUR TEXT HERE' $i; done
這會寫「添加你的文字」到行包含<head>
標記線旁邊。您的原始文件將有一個附加擴展名.bak
。
PS:如果原始文件是複雜的,不包含格式正確的HTML或要補充的是複雜的文字,你應該使用BeautifulSoup或與標記語言處理一些專門的庫。
既然你在HTML閱讀,我會建議使用ElementTree的該作品有點像這樣這樣做:
import xml.etree.ElementTree as etree
html = etree.parse(file_path)
head = html.getroot().find('head')
# To insert a tag surrounding in <head>:
newtag = etree.Element("newtag", attrib={})
newtag.text = "Text inside newtag surrounding"
head.insert(0,newtag)
# To just insert a text inside the head tag surrounding:
head.text = newtext + head.text
html.write(new_file_path)
見ElementTree的文檔for Python2或Python3
我想你可能會更好使用設計工具用於批量文件編輯,如'sed'或'awk' – 2013-02-26 05:19:23
讀取文本,替換(插入)在(可能非常長的)字符串中的特定點,寫回到磁盤。這有一個好處,你可以寫入一個新文件,所以如果它沒有按預期工作,你不會毀壞原文。 – Floris 2013-02-26 05:19:58
是否可以在Windows或Linux中使用sed或awk? – 2013-02-26 05:32:51