Python模塊MarkupPy與自定義html報告詳解
簡介
MarkupPy是Python模塊用于生成HTML和XML格式的字符串。它的主要作用是提供了一種比原生HTML/XML更加易讀和易寫的編寫方式,通過Python代碼來生成HTML或XML代碼。
使用MarkupPy,可以在Python中使用不同的對象類型和方法,來動態(tài)地生成HTML/XML文件。相比手動編寫HTML/XML代碼,使用MarkupPy能夠使代碼更加簡潔、易讀、易寫且易于維護。
1. 設置文件初始信息
init 方法的語法
markup.page().init( title=None #設置文檔標題 header=None #設置頂部信息 footer=None #設置頁腳信息 encoding=None #定義編碼 lang='en' #頁面語言,通常是兩個字符串,在html模式下顯示為<html lang='en'> css=None #層疊樣式表文件名為字符串或多個css文件的字符串列表 metainfo=None #設置<base href="..."> 標簽 <head> charset=None #定義字符集的字符串將被插入<meta http-equiv='Content-Type' content='text/html; charset=myset'> doctype=None #文檔類型字符串 bodyattrs=None #以{'key':'value',…},它將被添加為<body>元素的屬性,如<body key='value'…> script=None #字典包含src:類型對,<script type='text/type' src-src></script>或列表['src1', 'src2',…]在這種情況下,'javascript'被假定為所有 base=None #設置<base href="…"> <head>中的標簽 )
代碼示例
from MarkupPy import markup # 準備一個生成文件 file = 'E:\其他\\tmp.html' # 使用page方法 page = markup.page() # 使用 init 方法定義文件初始信息 page.init( title = '文檔標題', header = '========= 文檔頂部信息 =========', footer = '\n----頁腳信息' ) # 換行 page.br() # 寫入文件 with open(file, 'w') as file: file.write(str(page))
結果
2. 插入文本內(nèi)容
2.1. 插入文本
插入單行文本內(nèi)容
from MarkupPy import markup # 準備一個生成文件 file = 'E:\其他\\tmp.html' # 使用page方法 page = markup.page() # 插入正文 page.p('這是一行正文') '''定義一個簡單的有序列表''' page.ol() page.li('這是第1個有序列表') page.li('這是第2個有序列表') page.ol.close() '''定義一個多層有序列表''' page.ol() page.li('這是第1個嵌套有序列表') page.ol() page.li('這是第2個嵌套有序列表') page.ol() page.li('這是第3個嵌套有序列表') page.ol.close() #關閉有序列表 page.ol.close() #關閉有序列表 page.ol.close() #關閉有序列表 # 寫入文件 with open(file, 'w') as file: file.write(str(page))
插入多行內(nèi)容(不能直接向p寫入多行內(nèi)容,通過列表或元組引入)
from MarkupPy import markup # 準備一個生成文件 file = 'E:\其他\\tmp.html' # 使用page方法 page = markup.page() # 使用 p 方法插入內(nèi)容 text = ['這是第1行內(nèi)容','這是第2行內(nèi)容'] page.p(text) page.p(('這是第3行內(nèi)容','這是第4行內(nèi)容')) # 寫入文件 with open(file, 'w') as file: file.write(str(page))
直接插入多行引發(fā)異常
page.p('這是第1行內(nèi)容','這是第2行內(nèi)容')
2.2. 插入無序列表 ul
from MarkupPy import markup # 準備一個生成文件 file = 'E:\其他\\tmp.html' # 使用page方法 page = markup.page() # 插入正文 page.p('這是一行正文') '''直接插入列表(默認無序)''' page.li('這是一個無序列表(默認的)') page.li('這是一個無序列表(默認的)') '''指定插入無序列表''' page.ul() page.li('這是一個無序列表(手動指定的)') page.ul.close() '''插入嵌套無序列表''' page.ul() page.li('這是第1個嵌套無序列表') page.ul() page.li('這是第2個嵌套無序列表') page.ul() page.li('這是第3個嵌套無序列表') page.ul.close() #關閉無序列表 page.ul.close() #關閉無序列表 page.ul.close() #關閉無序列表 # 寫入文件 with open(file, 'w') as file: file.write(str(page))
由于默認的無序列表無法關閉,所以在第二次指定無序列表時會自動識別為嵌套
2.3. 插入有序列表 ol
from MarkupPy import markup # 準備一個生成文件 file = 'E:\其他\\tmp.html' # 使用page方法 page = markup.page() # 插入正文 page.p('這是一行正文') '''定義一個簡單的有序列表''' page.ol() page.li('這是第1個有序列表') page.li('這是第2個有序列表') page.ol.close() '''定義一個多層有序列表''' page.ol() page.li('這是第1個嵌套有序列表') page.ol() page.li('這是第2個嵌套有序列表') page.ol() page.li('這是第3個嵌套有序列表') page.ol.close() #關閉有序列表 page.ol.close() #關閉有序列表 page.ol.close() #關閉有序列表 # 寫入文件 with open(file, 'w') as file: file.write(str(page))
3. 設置字體屬性
3.1. 語法
markup.page().p('字體', style='屬性1; 屬性2; 屬性3...')
示例
from MarkupPy import markup page = markup.page() # 設置文件屬性 page.p('這是第一行正文,默認屬性') page.p( '這是第二行正文:顏色(紅色)、對齊方式(左對齊)、字體大小(40)、字體加粗', style='color: red; ' 'text-align: left; ' 'font-size: 40; ' 'font-weight: bold;') # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
3.2. 設置對齊方式
- left:左對齊
- right:右對齊
- center:居中對齊
- auto:水平對齊
- middle:垂直對齊
from MarkupPy import markup page = markup.page() # 設置文件對齊方式 page.p('這是一個左對齊文本', style='text-align: left') page.p('這是一個右對齊文本', style='text-align: right') page.p('這是一個居中對齊文本', style='text-align: center') page.p('這是一個水平居中對齊文本', style='text-align: auto') page.p('這是一個垂直居中對齊文本', style='text-align: middle') # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
3.3. 設置字體大小
from MarkupPy import markup page = markup.page() # 設置文件對齊方式 page.p('字體大小:50', style='font-size: 50') page.p('字體大小:40', style='font-size: 40') page.p('字體大小:30', style='font-size: 30') page.p('字體大小:20', style='font-size: 20') # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
3.4. 設置字體顏色
- black:黑色
- white:白色
- red:紅色
- green:綠色
- blue:藍色
- yellow:黃色
- orange:橙色
- purple:紫色
- gray:灰色
from MarkupPy import markup page = markup.page() # 設置文件對齊方式 page.p('字體顏色: 紅色', style='color: red') page.p('字體顏色: 黑色', style='color: black') page.p('字體顏色: 藍色', style='color: blue') # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
3.5. 設置字體加粗
from MarkupPy import markup page = markup.page() # 設置文件對齊方式 page.p('字體加粗!', style='font-weight: bold;') page.p('字體正常!') # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
4. 插入特殊文件
4.1. add 插入圖像、音頻、視頻、Flash文件
page = markup.page() # 添加圖片,并設置寬度、高度 page.add('<img src="E:\其他\dog.jpg" alt="狗子圖片" width="800" height="500">') # 添加音頻 page.add('<audio src="audio.mp3" controls>') # 添加視頻 page.add('<video src="video.mp4" controls>') # 添加Flash page.add('<object type="application/x-shockwave-flash" data="flash.swf">')
插入圖片示例
from MarkupPy import markup page = markup.page() # 添加圖片,并設置寬度、高度 page.add('<img src="E:\其他\dog.jpg" alt="狗子圖片" width="800" height="500">') # 寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
4.2. img 插入圖片
語法
page = markup.page() page.img( src #指向圖像文件的URL。 alt #圖像無法讀取,使用一個默認的文本替代。 width #設置寬度(以像素為單位) 。 height #設置高度(以像素為單位) 。 title #提供有關圖像內(nèi)容的額外信息。 class_ #添加樣式或設置特定的樣式。 style #添加其他自定義樣式。 id #指定圖像元素的ID。 border #指定圖像周圍的邊框?qū)挾龋ㄈ绻嬖冢? usemap #指定一個映射,允許您將圖像劃分為幾個可單擊區(qū)域。 ismap #允許您使用usemap屬性,將圖像作為客戶端圖像映射(CIM)使用。 align #指定圖像的水平對齊方式。 )
本地存在圖片
from MarkupPy import markup page = markup.page() # 定義圖片 page.img( src='E:\其他\cat.jpg', #圖片地址 width=800, #設置寬度 height=500, #設置高度 alt='圖片沒找到,使用該文本替代' ) # 將文件寫入文件 with open('E:\其他\\tmp.html', 'w') as file: file.write(str(page))
當找不到圖片,結果如下:
5. 引入超鏈接
- 超鏈接可以是本地,也可以是網(wǎng)絡
page.a('這是一個百度鏈接', )
(點擊后自動跳轉(zhuǎn)百度頁面)
到此這篇關于Python模塊MarkupPy & 自定義html報告的文章就介紹到這了,更多相關Python html報告內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決python -m pip install --upgrade pip 升級不成功問題
這篇文章主要介紹了python -m pip install --upgrade pip 解決升級不成功問題,需要的朋友可以參考下2020-03-03