max.bai
2019-08
需要用python執行mockjs 來生產模擬資料。
當然有其他辦法,這個確實比較繞,暫且不討論,主要關注python執行js。
execjs 或者pyv8 pyton呼叫js的庫,execjs穩定點,pyv8經常報錯,但效能好點(或許是我姿勢不對)
nodejs 用來執行js的引擎
mockjs js庫
**確實太少了,就直接上了,注釋部分為pyv8用法
# ! python3
# -*- coding:utf-8 -*-
import os
import execjs
# import pyv8
if os.name == 'nt':
else:
os.environ["node_path"] = "/usr/local/nodejs/lib/node_modules" #for centos
mockjs_path = '/usr/local/nodejs/lib/node_modules/mockjs/dist/mock.js'
# os.environ["execjs_runtime"] = "jscript"
os.environ["execjs_runtime"] = "node"
print(execjs.get().name)
class mockjs():
# if os.name == 'nt':
# mockjsobject = execjs.compile("var mock = require('mockjs');")
# else:
# import pyv8
# mockjsobject = pyv8.jscontext()
# mockjsobject.enter()
# mockjsobject.eval(open(mockjs_path, 'r', encoding='utf-8').read())
mockjsobject = execjs.compile("var mock = require('mockjs');")
@classmethod
def mock(cls, tdata):
template = '''
var tt = {}
mockresult = mock.mock(tt)
if (typeof(mockresult) == "object") }
'''.format(tdata)
# print(template)
# if os.name == 'nt':
# template += 'return mockresult'
# return cls.mockjsobject.exec_(template)
# else:
# template += 'mockresult'
# return cls.mockjsobject.eval(template)
template += 'return mockresult'
return cls.mockjsobject.exec_(template)
if __name__ == "__main__":
tdata = '''
, "fuction2": function(), "rgg2|1-5": [/[a-z][a-z][0-9]/], "f3|1-5": [function()], "r3": , "f4": }}
''' #mockjs 模板 格式參考mockjs官網
import time
time1 = time.time()
for i in range(1):
print(i, mockjs.mock(tdata)[:10])
print(time.time() - time1)
前面說了也有其他辦法實現,比如下面這些python庫: 執行python指令碼
linux有下列的幾種方法來執行python指令碼 注 我所用的python環境為 2.6 一.終端命令列下 python name.py 二.python環境中 若指令碼名稱為name.py,其內容為 a head b hehe print a,b 則使用 impport name 針對此種方法我...
執行python指令碼後台執行
加了 以後可以使指令碼在後台執行,這樣的話你就可以繼續工作了。但是有乙個問題就是你關閉終端連線後,指令碼會停止執行 python3 run.py dev null 2 1 nohup python3 run.py dev null 2 1 注意print有輸出緩衝,使用 u引數,使得python不啟...
執行python指令碼後台執行
在linux中,可以使用nohup將指令碼放置後台執行,如下 nohup python myscript.py params1 nohup.out 2 1 但直接使用上面 無法在程式執行過程中檢視python中的print computing 輸出結果,比如在每次迴圈中使用print語句等。原因是p...