過(guò)在瀏覽器上面跑 Python 嗎?想過(guò) Python 能放在 script 元素里運(yùn)行嗎?想過(guò) Python 能直接操控 DOM 和瀏覽器嗎?Brython 告訴你,一切皆有可能。
Python
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
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ù)研究。
由于工作需要,需要每天查詢服務(wù)器日子,查詢報(bào)錯(cuò)信息,每天人工登服務(wù)器是真的太麻煩了~~~~由于需要僅僅使用了paramiko的一小部分功能更多請(qǐng)看官網(wǎng)。
pip install paramiko
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
1、建議
a》stdout.read().decode('utf-8') # stdout最好decode下
b》paramiko結(jié)合re【正則】會(huì)更加的好
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
三、屬性方法
import execjs
result = execjs.eval('1 + 2')
print(result)
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
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))
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。