Ajax與Python服務器交互,在網頁實現簡單的Python3代碼的運行

說一下大概的思路:python

1.目標:在輸入框輸入Python3代碼,點擊運行,右邊顯示代碼結果。服務器

2.步驟:ide

那首先咱們須要一個頁面來顯示咱們的輸入輸出,還有一個按鈕;spa

而後就是經過點擊按鈕事件獲取輸入的內容;(用到了Ajax與服務器交互;它會自動封裝請求行,請求頭,空格,咱們只須要把內容send就能夠了)事件

再就是發生內容到服務器;it

服務器接收內容;class

服務器處理內容;(用正則獲得咱們的代碼塊寫入新的文件命名爲.py的文件,test

而後用subprocess模塊下的方法去獲取新文件執行後的結果)rsa

服務器返回結果,包括:響應行、響應頭、空格、響應體(代碼執行結果);請求

最後就是頁面接收到返回結果,並顯示到輸出框。


3.遇到的問題:主要就是在處理服務器接收頁面發送過來的數據,用正則拆分,這塊坑比較多。


貼一下利用subprocess的實現吧:

obj = subprocess.Popen(["python3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,universal_newlines=True)

f = open("test.py", "r")

content = f.read()

out_error_list = obj.communicate(content)

#返回結果是一個元組,元組的[0]是程序的返回結果,[1]是執行代碼的錯誤信息提示。

print(out_error_list)

if not out_error_list[0]:

result = "請檢查輸入的代碼正確性,謝謝!"+ out_error_list[1]

else:

result = out_error_list[0]

相關文章
相關標籤/搜索