整合營(yíng)銷服務(wù)商

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

          免費(fèi)咨詢熱線:

          Brython - 在瀏覽器上運(yùn)行Python

          過(guò)在瀏覽器上面跑 Python 嗎?想過(guò) Python 能放在 script 元素里運(yùn)行嗎?想過(guò) Python 能直接操控 DOM 和瀏覽器嗎?Brython 告訴你,一切皆有可能。

          Python

          簡(jiǎn)介

          Brython(Browser Python),是由 brython-dev 組織在 Github 上開源的可在瀏覽器上運(yùn)行的 Python3 實(shí)現(xiàn),項(xiàng)目地址為 https://github.com/brython-dev/brython。僅需在 HTML 引入一個(gè) brython.js 并初始化,就可以在瀏覽器上運(yùn)行 Python 代碼,包括 Python 的推導(dǎo)式、生成器、元類、模塊導(dǎo)入,和許多 CPython 模塊,并且可以操作 DOM 元素和事件,以及與 jQuery,Highcharts 等 JS 庫(kù)進(jìn)行交互。

          Brython

          安裝

          Brython 只需引入其 Javascript 文件即可使用,可以使用 CDN:

          <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/brython@3.8.8/brython.min.js"></script>

          如果想要使用導(dǎo)入標(biāo)準(zhǔn)庫(kù),那還需要引用 stdlib 的 JS:

          <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/brython@3.8.8/brython_stdlib.js"></script>

          此外,還可以使用 pip 在本地安裝:

          pip install brython
          python -m brython --install

          示例

          我們來(lái)看一個(gè)簡(jiǎn)單的例子:

          <html>
          <head>
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/brython@3.8.8/brython.min.js"></script>
          </head>
          <body onload="brython()">
          
            <script type="text/python">
            from browser import document, alert
          
            def echo(event):
                alert(document["zone"].value)
          
            document["mybutton"].bind("click", echo)
            </script>
          
            <input id="zone"><button id="mybutton">click !</button>
          
          </body>
          </html>

          可以看到,代碼中使用了一個(gè)類型為 text/python 的 script 元素,在里面包含了 Python 代碼。

          在 Python 代碼中,從由 Brython 提供的 browser 庫(kù)中導(dǎo)入了 document 和 alert,分別對(duì)應(yīng) Javascript 中的 document 對(duì)象和 alert 函數(shù)。然后,定義了一個(gè) echo 函數(shù),用來(lái)彈出對(duì)話框來(lái)顯示 id 為 zone 的輸入框的值。最后對(duì) id 為 mybutton 的按鈕的 click 事件與 echo 函數(shù)進(jìn)行綁定。

          把代碼放到瀏覽器中運(yùn)行,顯示出一個(gè)文本輸入框和一個(gè)按鈕。輸入 Hello,并點(diǎn)擊按鈕,此時(shí)彈出了顯示 Hello 的對(duì)話框。

          Brython運(yùn)行例子

          我們?cè)賮?lái)看一個(gè)使用了 Python 標(biāo)準(zhǔn)庫(kù)的例子:

          <html>
          <head>
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/brython@3.8.8/brython.min.js"></script>
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/brython@3.8.8/brython_stdlib.js"></script>
          </head>
          <body onload="brython()" style="background-color: #ddd;">
          
            <script type="text/python">
            from datetime import datetime
            from browser import document, timer
          
            def show_time():
                now = datetime.now().strftime("%H:%M:%S")
                document["display"].textContent = now
          
            timer.set_interval(show_time, 1000)
          
            </script>
          
            <div id="display"></div>
          
          </body>
          </html>

          此時(shí)我們需要引入 brython_stdlib.js。在 Python 代碼中,使用了 Python 的 datetime 模塊來(lái)獲取當(dāng)前時(shí)間,同時(shí)利用 Brython 的 timer 的 set_interval 來(lái)實(shí)現(xiàn)周期性調(diào)用。運(yùn)行代碼,網(wǎng)頁(yè)上顯示了每秒刷新的當(dāng)前時(shí)間:

          Brython運(yùn)行例子2

          總結(jié)

          Brython 所實(shí)現(xiàn)的功能極其豐富,把 Python 語(yǔ)言和瀏覽器 Javascript 有機(jī)地結(jié)合在了一起,實(shí)現(xiàn)了在瀏覽器中運(yùn)行 Python 代碼,并使用 Python 操作 DOM。

          雖然 Brython 與原生 Javascirpt 和 WASM 等技術(shù)相比較實(shí)用價(jià)值仍不高,但為前端的跨語(yǔ)言實(shí)現(xiàn)給出了一種可行的方案,值得對(duì)相關(guān)領(lǐng)域感興趣的開發(fā)者繼續(xù)研究。

          ython鏈接服務(wù)器

            由于工作需要,需要每天查詢服務(wù)器日子,查詢報(bào)錯(cuò)信息,每天人工登服務(wù)器是真的太麻煩了~~~~由于需要僅僅使用了paramiko的一小部分功能更多請(qǐng)看官網(wǎng)。

          模塊

          pip install paramiko

          簡(jiǎn)單使用

          ssh = paramiko.SSHClient()  # 調(diào)用paramiko模塊下的SSHClient()
          ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 加上這句話不用擔(dān)心選yes的問(wèn)題,會(huì)自動(dòng)選上(用ssh連接遠(yuǎn)程主機(jī)時(shí),第一次連接時(shí)會(huì)提示是否繼續(xù)進(jìn)行遠(yuǎn)程連接,選擇yes)
          ssh.connect(hostname='ip', port='端口號(hào)int類型', username='用戶名', password='密碼', timeout='超時(shí)時(shí)間')  # 連接遠(yuǎn)程主機(jī),SSH端口號(hào)為22
          stdin, stdout, stderr = ssh.exec_command('cd /;cd /home; pwd')  # 顯示目前所處位置
          # ssh.exec_command('linux命令【多條命令用{;}分號(hào)分割】')
          # stdout--->返回結(jié)果
          # stderr--->錯(cuò)誤信息
          # 打印返回結(jié)果
          result = stdout.read()
          print result

          結(jié)語(yǔ)

          1、建議
              a》stdout.read().decode('utf-8')   #  stdout最好decode下
              b》paramiko結(jié)合re【正則】會(huì)更加的好

          官網(wǎng)地址

          http://docs.paramiko.org/en/2.4/index.html

          #python##服務(wù)器##自動(dòng)化##linux##每天學(xué)python#

          、簡(jiǎn)介

          PyExecJS是一個(gè)Python庫(kù),它提供了一種在Python中執(zhí)行JavaScript代碼的方式。它基于ExecJS庫(kù),可以使用多個(gè)JavaScript運(yùn)行時(shí)(如Node.js、PhantomJS、JScript等)來(lái)執(zhí)行JavaScript代碼。

          使用PyExecJS,您可以在Python環(huán)境中執(zhí)行JavaScript代碼,從而利用JavaScript的功能和庫(kù)。這對(duì)于需要在Python中調(diào)用JavaScript代碼的任務(wù)非常有用,例如執(zhí)行一些特定的JavaScript函數(shù)、處理JavaScript生成的數(shù)據(jù)或與JavaScript相關(guān)的網(wǎng)頁(yè)交互等。

          官網(wǎng):https://github.com/doloopwhile/PyExecJS

          二、安裝

          pip install PyExecJS

          三、屬性方法

          1. execjs.get(name):獲取指定名稱的 JavaScript 運(yùn)行時(shí)。它返回一個(gè) JavaScriptContext 對(duì)象,您可以使用該對(duì)象執(zhí)行 JavaScript 代碼。name 參數(shù)是 JavaScript 運(yùn)行時(shí)的名稱,例如 "Node.js"、"V8" 等
          2. execjs.eval(source, cwd=None):用于在 JavaScriptContext 對(duì)象中執(zhí)行指定的 JavaScript 代碼字符串。它將返回 JavaScript 代碼的執(zhí)行結(jié)果。
          • source 參數(shù)是要執(zhí)行的 JavaScript 代碼字符串。
          • cwd 參數(shù)是可選的,用于指定當(dāng)前工作目錄。
          import execjs
          
          result = execjs.eval('1 + 2')
          print(result) 
          1. execjs.compile(source, cwd=None):用于編譯指定的 JavaScript 代碼字符串并返回一個(gè) JavaScriptContext 對(duì)象。這個(gè)函數(shù)類似于 execjs.eval,但是它返回一個(gè)上下文對(duì)象,可以在后續(xù)的調(diào)用中多次使用。
          • source 參數(shù)是要編譯的 JavaScript 代碼字符串。
          • cwd 參數(shù)是可選的,用于指定當(dāng)前工作目錄。
          import execjs
          
          
          
          js_str='''
          var a=1,b=2
          function test(c=0){
          return a+b+c
          }
          '''
          
          
          context = execjs.compile(js_str)
          print(context.eval('a+b'))
          print(context.call('test',4))
          

          四、通過(guò)讀取js文件執(zhí)行js

          1. 創(chuàng)建js文件test.js
          import execjs
          
          with open('test.js','r') as js_file:
              context = execjs.compile(js_file.read())
              print(context.eval('a+b'))
              print(context.call('test', 4))
          
          1. 創(chuàng)建python文件test.py

          主站蜘蛛池模板: 无码AV一区二区三区无码| 亚洲乱码日产一区三区| 亚洲一区免费在线观看| 免费av一区二区三区| 狠狠色婷婷久久一区二区三区| jizz免费一区二区三区| 一区二区三区国产| 亚洲一区二区三区乱码在线欧洲| 久久青草国产精品一区| 亚洲综合一区二区精品导航| 日本一区二三区好的精华液| 国产成人无码aa精品一区| 一区国严二区亚洲三区| 国产成人无码精品一区二区三区| 亚洲国产精品一区二区久久| 麻豆果冻传媒2021精品传媒一区下载 | 视频一区精品自拍| 日本在线视频一区二区| 国产亚洲一区二区三区在线观看| 国产伦精品一区二区三区在线观看 | 亚洲AV成人精品一区二区三区 | 日韩AV无码久久一区二区| 国产精品久久久久一区二区| 亚洲一区二区三区不卡在线播放 | 日本一区二区三区精品视频| 成人精品一区二区户外勾搭野战 | 国产手机精品一区二区| 国产免费一区二区三区在线观看| 精品视频在线观看一区二区三区| 精品国产免费一区二区| 国产乱码一区二区三区四| 国产美女在线一区二区三区| 无码aⅴ精品一区二区三区浪潮| 久久久久久人妻一区精品 | 中文字幕一区二区三区四区 | 国产无人区一区二区三区 | 亚洲精品伦理熟女国产一区二区| 亚洲一区二区三区91| 色噜噜狠狠一区二区| 日本香蕉一区二区三区| 亚洲一区无码精品色|