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 欧美在线播放视频,最近中文字幕无,啪啪国产视频

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          PyScript:讓 Python 腳本在 Web 中跑起來

          是下一個大事件嗎?如果繼續(xù)發(fā)展下去,有可能。


          在 2022 年 PyCon 美國大會期間,作為主題演講嘉賓之一的 Peter Wang 公布了 PyScript,一種在 HTML 中直接編寫 Python 腳本的方法?;蛟S你不知道 Peter,但你可能聽說過 Anaconda,這是一種流行的開源的 Python 和 R 語言的發(fā)行版本,特別關(guān)注數(shù)據(jù)科學(xué)。Peter 正是 Anaconda 的 CEO 和聯(lián)合創(chuàng)始人。


          換言之,PyScript 是由一家著名的科技公司開發(fā)的,這可能會保證它在不久的將來成為可行的方案。它在 Python 和 Web 開發(fā)者中受到了極大的關(guān)注,GitHub 上已有超過 10k 顆 Stars。然而,它是否能成為一個成功的、有競爭力的產(chǎn)品,取決于長期的時間和開發(fā)投入。目前,它還有一些已知的缺陷(將在最后討論)。


          閑話少說,讓我們快速了解一下這個令人振奮的產(chǎn)品吧!

          py-script 標簽

          我們知道,HTML 文件是大多數(shù)網(wǎng)站最常見的元素。在創(chuàng)建網(wǎng)站時,我們的工作就是直接或間接地通過一些框架來編制 HTML 文件。在典型的 HTML 文件中,你會看到各種類型的標簽。例如,<head>定義了 HTML 頁面的元數(shù)據(jù)和關(guān)鍵信息,<title>是整個文檔的標題,而<h1>、<h2>等定義了不同級別的內(nèi)容標題。


          如前所述,PyScript 允許你在 HTML 中編寫 Python 腳本,它使用一個特殊的標簽py-script。在這個標簽中,你可以嵌入 Python 腳本。要了解它是如何工作的,可以創(chuàng)建一個 HTML 文件,其中包含以下代碼,并使用 Chrome 瀏覽器打開該文件。在 Chrome 瀏覽器中,你應(yīng)該能夠看到類似下面這樣的內(nèi)容:



          作者截圖


          在上面的代碼片段中,你可能已經(jīng)注意到以下三個關(guān)鍵點:

          • link標簽定義了一個外部樣式表。在這個例子中,我們使用了 PyScript 提供的css文件。
          • 我們使用script標簽來嵌入一個由src定義、由 PyScript 托管的外部腳本。我們使用了defer,這樣腳本會在下載和頁面解析完成后執(zhí)行——本質(zhì)上是一種延遲執(zhí)行,而不是實時執(zhí)行。
          • 最有趣的部分是py-script標簽。如你所見,print("Hello, World!")是 Python 代碼。當執(zhí)行 HTML 文件時,就可以看到代碼求值結(jié)果。


          這很酷,不是嗎?如果你不熟悉 Web 開發(fā),但了解 Python,就可以使用 PyScript 嵌入任何有效的 Python 代碼。讓我們再看一個例子。



          另一個 PyScript 示例(圖片由作者提供)


          在這里,我們寫了一些需要計算的代碼,可以看到,腳本得到了正確的執(zhí)行。

          py-env 標簽

          在編寫更復(fù)雜的代碼時,就需要使用第三方庫。在這種情況下,我們可以利用py-env標簽。你可能已經(jīng)猜到的,env 是 environment 的縮寫。py-env標簽中列出了運行代碼所需的 Python 包。


          你可能知道,許多數(shù)據(jù)科學(xué)家都使用 pandas 進行數(shù)據(jù)處理工作。讓我們看看下面的例子。



          使用包的 PyScript(圖片由作者提供)


          如你所見,我們在py-env標簽中指定了依賴項(即 Pandas),該標簽包含在head標簽中。如果頁面需要多個依賴項,可以在這里把它們?nèi)苛谐觯?/span>


          <py-env>
            - pandas
            - matplotlib
            - numpy
          </py-env>

          復(fù)制代碼

          如你所見,在py-script標簽中,我們確實可以使用 Pandas 庫來創(chuàng)建一個DataFrame對象。然而,當我們把打印出來時就會發(fā)現(xiàn),它是一個單行,而不是一個結(jié)構(gòu)化的數(shù)據(jù)表。沒有一個適當?shù)慕Y(jié)構(gòu),我們就無法理解這些數(shù)據(jù)。幸運的是,我們可以使用write函數(shù)(下文會討論)。

          將內(nèi)容寫入指定標簽

          除了 Python 中的標準打印函數(shù)print,作為腳本的一部分,PyScript 有自己的write函數(shù),可以將數(shù)據(jù)發(fā)送到頁面上指定的 Web 元素中。請看下面的例子:



          PyScript 寫函數(shù) write(圖片由作者提供)


          與之前的例子相比,上述代碼片段有兩個重大變化:

          • 我們現(xiàn)在定義了一個 id 為"DataFrame"div,這樣稍后就可以引用。
          • py-script標簽中,我們創(chuàng)建一個與之前相同的DataFrame對象。但現(xiàn)在,我們不是調(diào)用print,而是調(diào)用pyscript.write函數(shù),請求 PyScript 處理并在"DataFrame"中顯示DataFrame對象。從輸出可以看到,我們現(xiàn)在有一個結(jié)構(gòu)化的表格了。


          write函數(shù)不僅能夠打印表格,還能夠打印數(shù)字。下面的例子向你展示了我們?nèi)绾问褂?/span>matplotlib(一個流行的 Python 包,用于數(shù)據(jù)可視化)來顯示由 Python 創(chuàng)建的圖。



          PyScript 打印圖(圖片由作者提供)


          如你所見,write 函數(shù)以期望的方式顯示了圖。

          py-repl 標簽


          Python 學(xué)習的最好方法之一是使用 REPL:讀取(Read)、求值(Evaluate)、打?。≒rint)和循環(huán)(Loop)。也就是說,使用一個交互式的 Python 控制臺,輸入一些代碼,Python 對其進行求值并打印適當?shù)妮敵觯缓笾貜?fù)這個過程。Web 頁面也可以提供這樣的 REPL 環(huán)境,比如 Jupyter Notebook。


          PyScript 可以使用py-repl標簽提供與此類似的東西。在這個元素中,你可以讓用戶自己編寫代碼,也可以以編程方式輸入代碼。請看下面的例子:



          PyScript REPL(圖片由作者提供)


          如你所見,上圖中有一個單元格,其中包括在py-repl標簽中指定的代碼。值得注意的是,單元格中的代碼可以引用我們之前在py-script標簽中定義的變量。一切看起來都很協(xié)調(diào)。

          感想


          本文介紹的內(nèi)容是現(xiàn)階段 PyScript 所能提供的主要亮點。它似乎是一個很有前途的產(chǎn)品,因為它提供了一個靈活的框架,讓 Python 程序員可以在沒有太多 Web 開發(fā)知識的情況下創(chuàng)建 Web 應(yīng)用。然而,也有其他類似的成功的產(chǎn)品,因此,競爭會很激烈。


          例如,如果我需要為自己的數(shù)據(jù)科學(xué)項目創(chuàng)建一個 Web 應(yīng)用,我就會直接使用 Streamlit。它的功能已經(jīng)相對成熟。請注意,雖然都與 Web 開發(fā)有關(guān),但 PyScript 和 Streamlit 屬于不同的產(chǎn)品系。PyScript 應(yīng)該更通用,因為它的目標是讓你可以在任何網(wǎng)頁上嵌入任何 Python 代碼,Streamlit 做不到這一點。


          在 PyScript 為更多的人所接受之前,它有幾個問題必須解決。例如,Web 頁面的加載速度非常慢。如果你嘗試跟隨本教程運行代碼,可能就會注意到,在 Web 頁面的顯示會有一個明顯的滯后。


          盡管如此,我還是覺得這個產(chǎn)品會繼續(xù)發(fā)展,我的信心主要來自于它的開發(fā)者——給我們帶來極好的 Anaconda 工具的 Anaconda 團隊。


          本文最初發(fā)布于 Better Programming。


          查看英文原文:Running Python Scripts on the Web Using PyScript

          了解更多軟件開發(fā)與相關(guān)領(lǐng)域知識,點擊訪問 InfoQ 官網(wǎng):https://www.infoq.cn/,獲取更多精彩內(nèi)容!

          者:劉早起

          來源:早起Python

          如何在線執(zhí)行 pandas 代碼感興趣,今天就簡單來說一下我探索這一功能的過程。

          首先在設(shè)計這一功能時,需要先明確大致需求:

          • ???用戶可以在當前頁面執(zhí)行
          • 不同用戶之間獨立運行
          • 不需要加載額外代碼或操作

          其中最重要的一點就是用戶可以在當前網(wǎng)站、當前單元格執(zhí)行代碼,其次盡可能的減少其他操作。

          其實為了實現(xiàn)這個功能,我探索了大半個月,不斷修改方案,刪掉了幾個寫了很久但是不能完美實現(xiàn)的代碼,幾度放棄,最后還是磕磕碰碰的做出來,下面是我的一些經(jīng)驗,僅供參考。

          方案1

          首先最簡單的思路就是用自己的服務(wù)器,前端寫一個輸入框,然后將用戶提交的代碼到后臺,執(zhí)行后再返回前端,就像這樣

          但是思索了一番還是放棄了,除了要防止惡意用戶執(zhí)行sudo rm - rf /*之類的代碼,為了滿足第二個需求就要給每個用戶分配一定的空間,這就很吃服務(wù)器的配置,例如前天最高100+用戶同時運行,我的 4c8g 服務(wù)器肯定是帶不動的。

          并且如果采取這個的方案,理論上可以實現(xiàn),但除了升級服務(wù)器要錢,我也沒有開發(fā)類似產(chǎn)品的經(jīng)驗,時間成本不好預(yù)估,遂放棄。

          方案2

          之后又是一番面向 stackoverflow 編程,我了解到很多可以在線執(zhí)行代碼的網(wǎng)站,就像這樣

          確實可以在線執(zhí)行一段代碼,但是除去我是否能做出來,如何控制權(quán)限等問題,這樣的網(wǎng)站主要是以執(zhí)行代碼為主,無法完成 pandas 教程的任務(wù)。

          并且代碼不能預(yù)設(shè)置,只能進入頁面后手動輸入,本地數(shù)據(jù)也不好加載,而且執(zhí)行一次就要跳轉(zhuǎn)到一個新的頁面,十分繁瑣(寫一個爬蟲接口也是一個辦法,但是就太依賴對方網(wǎng)站),于是很快放棄了這條思路。

          Jupyterhub

          繼續(xù)一番搜索后,我發(fā)現(xiàn)了一個神器 —— Jupyterhub

          如上圖架構(gòu)展示的一樣,使用Jupyterhub 可以給每個用戶分配一個獨立的Jupyter Notebook,并且無需考慮權(quán)限等問題,我也可以提前將代碼和數(shù)據(jù)進行預(yù)設(shè)。

          但問題在于采取此方案無法滿足教程需求,因為全部內(nèi)容都需要放在 Jupyter Notebook中,整體上就是將 pandas300題做成了在線版,而我想要的是一個網(wǎng)站。

          并且使用Jupyterhub不可避免的要進行一些 dockerk8s 操作,這也不是我熟悉的領(lǐng)域,雖熱在這條思路上走了一段時間,但還是放棄了。

          JupyterBook

          之后又是一番檢索,但無非都是上面幾種方案,在我感覺要放棄做這個網(wǎng)站時,無意中發(fā)現(xiàn)一個項目JupyterBook

          簡單來說,他可以將你的 Jupyter Notebook 轉(zhuǎn)換為 html 頁面(基于 sphinx),并且一個很重要的特點就是可以在線、交互式執(zhí)行代碼。

          具體怎么實現(xiàn)的呢?首先需要將你的項目上傳到一個公共資源平臺binder,這個網(wǎng)站會為你的項目創(chuàng)建一個鏡像,這樣可以方便給不同用戶使用

          簡單來說,可以理解為將你的 Jupyter Notebook 掛在這個網(wǎng)站,別人就能去在線執(zhí)行,但是很明顯,我們都需要跳轉(zhuǎn)到這個頁面去使用,而我希望在當前頁面執(zhí)行代碼。

          這時就需要在使用另一個項目(Thebe

          它使用JupyterLab API,通過加載一段JS代碼,再指定一個執(zhí)行后端(上面提到的binder),就可以在當前頁面執(zhí)行代碼。

          聽起來很復(fù)雜,但是實現(xiàn)起來很簡單,上面我們說到,JupyterBook 是基于 Sphinx制作頁面的,所以只需要提前在配置 Sphinx時加載 sphinx_thebe插件即可,

          至此,開頭我需求中的1、2就完美實現(xiàn)了,還剩最后一個問題就是如何讓用戶更少的執(zhí)行代碼?

          如果你體驗過我的網(wǎng)站,你會發(fā)現(xiàn)執(zhí)行一個 pandas 操作連 import pandas as pd和讀取數(shù)據(jù)的操作都不用!

          其實這些代碼在啟動jupyter notebook時就預(yù)先加載了,只需要在對應(yīng)單元格上加上 thebe-init的 tag 即可。

          當然,使用 JupyterBook 還是有很多坑,消耗我最多的時間就是在修改樣式上,默認的樣式如下,可能英文狀態(tài)下表現(xiàn)還行,但是到中文并不是很適配

          為了大家不僅用的爽,我對網(wǎng)站顏值的要求也很高,于是爆改了幾千行的 cssjs 代碼,甚至組件的位置都調(diào)整到小數(shù)點后兩位才讓我滿意,磕磕碰碰一個多月終于將整個網(wǎng)站做出來

          最后,本文僅是對在線執(zhí)行代碼做了一個快速、不完整的總結(jié)。由于篇幅限制,還有很多搭建、部署網(wǎng)站細節(jié)的內(nèi)容沒有涉及到,如果你覺得不錯,歡迎點贊、轉(zhuǎn)發(fā)。

          器之心報道

          項目作者:vinayak mehta參與:一鳴

          從 PDF 表格中獲取數(shù)據(jù)是一項痛苦的工作。不久前,一位開發(fā)者提供了一個名為 Camelot 的工具,使用三行代碼就能從 PDF 文件中提取表格數(shù)據(jù)。

          PDF 文件是一種非常常用的文件格式,通常用于正式的電子版文件。它能夠很好的將不同的排版格式固定下來,形成版面清晰且美觀的展示效果。然而,對于想要從 PDF 中提取信息的人們來說,PDF 是個噩夢,尤其是表格。

          大量的學(xué)術(shù)報告、論文、分析文章都使用 PDF 展示其中的表格數(shù)據(jù),但是對于如果想要直接從表格中復(fù)制數(shù)據(jù)則會非常麻煩。不久前,有一位開發(fā)者提供了一個可從文字 PDF 中提取表格信息的工具——Camelot,能夠直接將大部分表格轉(zhuǎn)換為 Pandas 的 Dataframe。

          • 項目地址:https://github.com/camelot-dev/camelot

          Camelot 是什么

          據(jù)項目介紹稱,Camelot 是一個 Python 工具,用于將 PDF 文件中的表格數(shù)據(jù)提取出來。

          具體而言,用戶可以像使用 Pandas 那樣打開 PDF 文件,然后利用這個工具提取表格數(shù)據(jù),最后再指定輸出的形式(如 csv 文件)。

          代碼示例

          項目提供的 PDF 文件如圖所示,假設(shè)用戶需要提取這些文字之間的表格 2-1 中的信息。

          PDF 文件。我們需要提取表格 2-1。

          使用 Camelot 提取表格數(shù)據(jù)的代碼如下:

          >>> import camelot
          >>> tables = camelot.read_pdf('foo.pdf') #類似于Pandas打開CSV文件的形式
          >>> tables[0].df # get a pandas DataFrame!
          >>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, sqlite,可指定輸出格式
          >>> tables[0].to_csv('foo.csv') # to_json, to_excel, to_html, to_sqlite, 導(dǎo)出數(shù)據(jù)為文件
          >>> tables
          <TableList n=1>
          >>> tables[0]
          <Table shape=(7, 7)> # 獲得輸出的格式
          >>> tables[0].parsing_report
          {
           'accuracy': 99.02,
           'whitespace': 12.24,
           'order': 1,
           'page': 1
          }
          

          以下為輸出的結(jié)果,對于合并的單元格,Camelot 在抽取后做了空行處理,這是一個穩(wěn)妥的方法。

          安裝方法

          項目作者提供了三種安裝方法。首先,你可以使用 Conda 進行安裝,這是最簡單的。

          conda install -c conda-forge camelot-py
          

          最流行的安裝方法是使用 pip 安裝。

          pip install camelot-py[cv]
          

          還可以從項目中克隆代碼,并使用源碼安裝。


          主站蜘蛛池模板: 一区二区视频在线播放| 日韩伦理一区二区| 国产主播在线一区| jazzjazz国产精品一区二区| 精品无码成人片一区二区98| 国产AV国片精品一区二区| 立川理惠在线播放一区| 精品无码国产一区二区三区51安| 精品无码AV一区二区三区不卡| 精品一区二区三区免费观看| 精品国产一区二区三区久 | 波多野结衣在线观看一区二区三区| 国产一区二区免费视频| 视频一区二区在线播放| 精品视频一区二区三区四区| 亚洲AV乱码一区二区三区林ゆな| 中文字幕在线无码一区| 一区二区三区内射美女毛片| 视频在线一区二区| 一区二区三区精品视频| 一区二区三区无码高清| 国产乱码精品一区二区三| 国产av福利一区二区三巨| 精品国产AⅤ一区二区三区4区| 亚洲一区二区三区无码影院| 合区精品久久久中文字幕一区| 国产精品一区在线观看你懂的| 国产精品亚洲高清一区二区| 日本亚洲国产一区二区三区| 免费视频精品一区二区三区| 色一乱一伦一图一区二区精品| 无码一区二区三区老色鬼| 亚洲一区中文字幕| 日韩AV片无码一区二区不卡| 日韩一区二区三区免费播放| 一区二区三区在线观看免费| 中文字幕一区在线| 亚洲国产av一区二区三区丶| 精品亚洲福利一区二区| 精品伦精品一区二区三区视频| 少妇激情av一区二区|