Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产成人福利精品视频,韩国女主播精品一区二区,亚洲天堂久久

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何用python生成簡單的html report報告

          提:

          用python寫了一個簡單的log分析,主要也就是查詢一些key,value出來,后面也可以根據需求增加。查詢出來后,為了好看,搞個html 表格來顯示。

          需要的組件: jinja2 flask 的模板。

          先說下設計思路,主要是練習python代碼玩,高手略過

          模擬scrapy,搞個管線


          每個管線分預處理,分析器,和后處理。預處理的話,可以篩選下數據,分析器提取關鍵信息,然后把結果丟給后處理。html報表就是在后處理生成。

          再搞個manger類,管理很多個管線,雖然現在單路pipeLine就完成了,說不定以后還能擴展呢。



          我們可以定義預處理,比如過濾一些不關注的關鍵字,或者關注一些特定關鍵字的行


          預處理的話,只處理QtiDCT-C關鍵字的日志行。

          然后把經過預處理后的數據丟給分析器

          主要查詢行數據行里面是否有keyword,然后根據分隔符,和結束符來提取內容

          keyword delimiter xxxxxendwith 這樣個模式

          獲取最終結果存儲到字典里面 result[keyword]=xxxx。這里會trim,去掉 \r\n.

          這樣就有了結果集result.最后丟給posthandler 后處理。完成報表輸出。


          后處理主要是用jinja2的模板,然后傳遞參數,生成最終的html文件。

          這里的jinja_template.temple, 內容如下



          有了模板,就可以在渲染模板的時候提供字典,變量,在模板里面顯示。最終完成報表的輸出。


          最終使用


          最終在main 方法中,通過-d參數傳入log所在目錄,然后迭代所有的文件,使用input 把文本文件轉換成行數據的list,丟給管線,最后把管線丟給manager,調用process ,完成txt日志的分析,到最后html的生產。

          此文為大家推薦一些實用的JavaScript日志記錄庫,希望對大家在前端學習過程中有所幫助!

          1、Conzole(對 JavaScript 原生 console 對象方法和功能進行封裝的 debug 面板,使其顯示在頁面內)

          2、console.log-wrapper(將日志清晰地記錄到 console,且兼容所有瀏覽器)

          3、loglevel(最輕量的 JavaScript 日志記錄工具庫,向封裝后可用的 console.log 方法增加可靠的日志等級)

          4、minilog(輕量的、用流式 API 顯示的、可用于客戶端和服務器端的日志記錄庫)

          5、log(帶有樣式的 Console.log)

          6、DistributedLog (DL是一個高性能的日志復制服務,提供了持久化、復制以及強一致性的功能,這對于構建可靠的分布式系統都是至關重要的)

          切版 qieban(.cn)

          一節我們完成了基本的設置,應該說,至少目前對我來說,現在的功能已經基本夠用了。

          于是我計劃從這篇文章開始,我就不再使用Word進行編輯了,用我這個私人日記軟件來編輯,實際驗證下是否實用。

          如下圖,這是我之前教程的編寫模式:

          之前也交待過,在word文檔中編輯,只要是包含了圖片的,復制后再粘貼到頭條都沒辦法成功,還需要把圖片一個個另外粘貼過去才行。如果是遇到gif動圖,從word復制只能復制靜態的截圖,還得再次復制原文件才能粘貼到頭條的編輯器中,操作起來比較麻煩。

          于是我就在我的程序中嘗試復制粘貼,發現跟word是一樣的效果。這對我來說是不實用的,需要對它進行改造。

          要解決這個問題,首先要分析下為什么會造成這種情況。我們使用的文本編輯控件是RichTextBox,這個默認是rtf格式的,跟word是一樣的。我們把帶圖文的內容粘貼到word文檔中,圖片就是可以正常顯示的。這就說明我們Ctrl+C的內容是rtf格式的,而不是通過瀏覽器粘貼能夠識別出來的格式。那么瀏覽器能夠識別的格式是不是每個瀏覽器特有的呢?于是我嘗試在FireFox中復制圖片和文字,粘貼到用Chrome打開的頭條編輯器,發現圖片是可以顯示的,上述的猜測可以排除了。那么這個格式究竟是怎樣的呢?我需要在程序中截獲一下粘貼的內容。在ContentManagerForm.cs文件中,添加鍵盤截獲事件,截獲Ctrl+V時的內容:

          我們發現,如果從瀏覽器上按Ctrl+C,到我們的軟件中按Ctrl+V,用DataFormats.Html做參數可以取到值,值的內容大概是這樣:

          前面紅線部分相當于信息頭,定義了一些參數,后面從<div>開始就是我們剛剛復制的內容了。我原封不動地將這些內容再寫回到剪貼板中,然后在瀏覽器中按Ctrl+V,瀏覽器也能夠正常顯示了。

          這樣我們基本上就明白了,想要跟瀏覽器正常通訊,需要兩步:第一步是要將rtf格式轉換為html格式,第二步是要將html再轉換成瀏覽器能夠識別的格式到剪貼板。

          一、rtf格式轉html格式

          一般這種格式轉換需要的工作量都比較大,自己從頭開發不大現實,需要網上找找看是否有現成的類庫。對比了幾家,找到了一個rftpipe的,而且是mit授權的。于是從Nuget獲取安裝,使用起來很容易:

          Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

          string html = RtfPipe.Rtf.ToHtml(tbxMainBody.Rtf);

          如此兩行代碼就實現了第一步的轉換。

          二、從html到剪貼板

          同樣也是先網上查資料,找到了一個ClipboardHelper的類,同樣也是mit授權的。把代碼加入到工程,然后在ContentManagerForm中增加一個專門用于復制成html格式到剪貼板的按鈕:

          按鈕處理代碼:

          private void btnCopyAsHtml_Click(object sender, EventArgs e)
          {
          Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
          string html = RtfPipe.Rtf.ToHtml(tbxMainBody.Rtf);
          ClipboardHelper.CopyToClipboard(html, "");
          }

          在使用了類庫的基礎上,三行代碼就完成了我想要的功能。

          功能演示:


          以上解決了從軟件復制到頭條的問題。

          還有一種場景,就是把瀏覽器當成來源,從瀏覽器復制到軟件的功能。如果是純文本RichEdit編輯器自帶就支持,如果是圖文混排的,就需要從html到rtf的轉換,我找了一下相關的類庫,貌似沒有類似rftpipe這種免費且直接支持字符轉換的庫,很多都是通過文檔來轉換,而且還是收費的。好不容易找到一個符合要求的,結果這個項目比較老,是在Framework下開發的,不支持.netcore。

          鑒于找到合適的庫有點困難,隨后仔細分析了下需求,其實這種從瀏覽器圖文混排復制到軟件的場景對我來說意義不大,通篇復制是不大可能的,關鍵位置復制文字做摘抄,真的有特別需要的圖片,單張截圖就好,所以這個功能暫時擱置吧。

          這個小項目伴著教程做到了24節,終于有了一點實際作用了:)

          ----------------------------------------------------

          本教程盡量保證2天一更,項目源碼已作為開源項目加入到Gitee,代碼內容會隨教程實時更新,大家有興趣的話可以關注我,以獲得最及時的更新。私信:

          私人日記 可以獲取Gitee的鏈接;

          sqlitestudio 可以獲取sqlitestudio的鏈接;

          菜鳥 可以獲取菜鳥教程鏈接;

          QQ群 可以獲取教程交流Q群號;

          大家閱讀過程中有哪些看不懂或未盡興的地方,可以在評論區留言,我會先記下來在后續的教程中找機會再說。

          教程有幫助的話請大家幫忙關注、轉發、擴散,能不能開專欄還需要你們的支持!


          主站蜘蛛池模板: 麻豆va一区二区三区久久浪| 亚洲日韩精品一区二区三区无码 | 国产在线无码视频一区二区三区| 一区二区三区观看免费中文视频在线播放 | 精品人妻码一区二区三区| 国产精品被窝福利一区 | 国产激情无码一区二区| 婷婷国产成人精品一区二| 亚洲爆乳精品无码一区二区| 精品人妻中文av一区二区三区| 波多野结衣高清一区二区三区 | 精品欧洲av无码一区二区14| 国产日韩AV免费无码一区二区| 国产一区二区三区樱花动漫| 成人精品一区二区三区电影| 亚洲国产AV无码一区二区三区| 精品国产一区二区三区久久| 手机看片一区二区| 中文字幕一区在线观看| 久久免费视频一区| 国产在线精品一区二区三区直播| 人妻无码一区二区视频| 久久久久人妻一区精品果冻| 国产美女av在线一区| 丝袜无码一区二区三区| 国产在线精品一区二区不卡| 91一区二区三区| 无码成人一区二区| 国产精品电影一区| 在线视频亚洲一区| 无码AV一区二区三区无码 | 日本国产一区二区三区在线观看 | 2020天堂中文字幕一区在线观 | 中文字幕一区视频一线| 亚洲AV无码一区二区二三区入口| 亚洲AV无码一区二区三区DV| 亚洲一区二区观看播放| 国产成人一区二区三区免费视频 | 亚洲一区中文字幕| 国产精品久久久久久一区二区三区 | 国产一区二区三区四|