【⽅法】HTML⽹页调⽤本地Python程序
代码已上传
⾸先声明,在HTML中调⽤本地Python程序是⼗分不推荐的,⼀是因为⽹页调⽤本地程序的权限正在被取消,⼆是因为真不如JS写直接,
三是只能在⾃⼰本地调⽤。
但如果你要⽤,像我⼀样,需要在课堂上进⾏⼀个Python代码的展⽰,并且想要⼀个好看的UI界⾯的话,可以这样来做,做起来还是很容
易的,但这样的展⽰仅限于需要弹框的,⽐如我的⼈脸检测是弹窗式,如果需要内嵌在⽹页内部的话是不⾏的。
我所使⽤的环境是 windows+python3
⼀、编写你的python代码
我们就先写⼀个简单的吧(这个能让你很容易地看到效果),命名为test2.py,写⼊代码:
1import os
2
3file = open('new_file' + '.txt','w')
4file.close()
注意:这⼀步在测试1中不⽤
⼆、编写你的HTML代码
完整代码在后⾯,这⾥是⽅法介绍。其中的重点部分在于java脚本中写的⼀个函数(function exec1),你不⽤改,后⾯调⽤了这个函
数。你只需要修改你需要执⾏的⽂件名,下⾯就是调⽤的⽅法:
1exec1('python hello.py')
2# 括号内的意义是⽤ python 来执⾏ hello.py 这个⽂件,!注意python是已经添加到环境变量了的。
3# 执⾏python程序⼀般有两个exe⽅法,⼀个是直接的python,另⼀种是pythonw,两者的区别是:⽤python执⾏会先打开⼀个命令⾏的⿊窗,⽽pythonw不会弹出4
5# or use this
6
7exec1('cmd')
8# 括号内的意义是直接执⾏ cmd 这个可执⾏⽂件。同理你把python⽂件打包成exe⽂件也是可以直接采⽤这种⽅法的。
python怎么读取桌面上的文件测试1完整代码在这⾥,新建⼀个html⽂件,命名test1.html:
5 <script language="javascript">
6 function exec1(command)
7 {
8 var ws = new ActiveXObject("WScript.Shell");
9 ws.run(command);
10 }
11 </script>
12 </head>
13
14<body>
15 <div id="header">
16 <h1>打开python命令⾏</h1>
17 </div>
18
19 <div id="nav1">
20打开python命令⾏(⽅式1)
21 <button onclick="exec1('python')">运⾏ python</button>
22 </div>
23
24 <div id="nav2">
25打开python命令⾏(⽅式2)
26 <input type="button" value="运⾏ python" onclick="exec1('python')" />
27 </div>
28
29</body>
30</html>
测试2完整代码在这⾥, 命名test2.html:
三、测试
1、⾸先测试ActiveX 使⽤正常!只需要HTML ⽂件,不需要python ⽂件,存放位置也随意。
chrome 浏览器看步骤①~⑤(5步);ie 浏览器看步骤⑥~⑨(4步)
①在chrome拓展程序中安装⼀个名为IE TAB的拓展程序
②⽤chrome浏览器打开test1.html⽂件 ③点击右上⾓IE Tab
启动IE内核,启动IE TAB后会弹出这个警告,你需要点击同意
④点击⽹页界⾯中的运⾏代码的button,还会弹出⼀个警告,你也需要点“是”
⑤最后弹出下⾯这样的python的命令⾏⿊框就验证成功了!
5
<script language="javascript"> 6
function exec1(command) 7
{ 8
var ws = new ActiveXObject("WScript.Shell"); 9
ws.run(command);10
} 11
</script> 12
</head> 13
14
<body>15
<div id="header">16
<h1>运⾏python</h1>17
</div>18
19
<div id="nav1">20
执⾏test2程序(⽅式1)21
<button onclick="exec1('python test2.py')">运⾏ python</button>22
</div>23
24
<div id="nav2">25
执⾏test2程序(⽅式2)26
<input type="button" value="运⾏ python" onclick="exec1('python test2.py')" />27
</div>28
29</body> 30</html>
⑥⽤ie浏览器打开test1.html⽂件
⑦页⾯下⽅弹出警告,点击允许
⑧ 点击“运⾏python”的按钮,⼜会弹出⼀个警告,点击“是”
⑨最后弹出下⾯这样的python的命令⾏⿊框就验证成功了!
2、完整测试
①将第⼀步中的test2.py⽂件和第⼆步中的test2.html⽂件准备好
②使⽤chrome,在启动IE Tab后,会在本地产⽣⼀个⽂件夹,我的是在C:\Users\Jerry\AppData\Local\IE Tab\11.4.23.1,到类似这样⼀个⽬录,把①准备好的python和html⽂件复制进去
③使⽤ie,把①准备好的python和html⽂件放在桌⾯上
④重复前⾯类似操作
如果在对应的的地址下新建了⼀个的⽂件就说明验证成功了。
注意如果遇到弹出⿊框⼀闪就消失了,说明⼏点问题,请注意排查:
1、⽐如我写的最简单的输出hello world程序,也是⼀闪就消失了,但我截了⼀张图,这就说明代码运⾏了,然后⾃动关闭了。但这并不是个问题,⼤多数⼈也不是要看这个⿊框的,只要这个py执⾏了就好。如果你想要看到print类型的结果,那么你可以修改exec1('python -i test2.py'),-i会让进程不被杀掉。类似的,你也可以⽤pythonw,就不会弹出⿊框。
2、在使⽤此教程执⾏你的Python程序前,请先单独运⾏看是否正常,如果程序有问题,效果就是⿊框⼀闪就消失了。
3、注意博客写的路径问题,使⽤chrome浏览器的根⽬录在C盘 IE TAB那个⽂件夹下,使⽤ie浏览器的根⽬录在桌⾯,注意⽂件放对位置。
4、这是⼀条Tips,如果你想在不想放在桌⾯,想在其他⽂件夹下运⾏,只需将代码中的路径改为绝对地址即可,⽤/。
5、如果弹不出警告,现在我提供两种按钮的⽅式,都尝试⼀下(有些⼈第⼀种成功,有些⼈第⼆种成功,需要关了重开试另⼀种)。再就是检查ActiveX服务的设置,通常检查IE设置,再重试就好了(⼀般设置都没问题)。在评论有⼈发现了除设置之外问题的解决,放在这⾥
可以尝试⼀下
四、后话
很多⼈想利⽤此教程完成⼀些Python+html的⼯作,我也研究了⼀段时间,下⾯分享⼀下,欢迎⼤家交流。但是会JS真的更好!
1、拓展⼀
上⾯的简单测试都是⽹页与程序分离的,那如果想要⽹页HTML与本地Python交互起来呢?但因为该⽅法的局限性,我们只能先将⽹页输⼊的内容以txt的形式存到本地,然后本地Python读取该txt再执⾏预设程序,然后把结果再存到本地txt中,最后⽹页读取该txt⽂本显⽰在⽹页上。
实现效果1:点击【运⾏python】按钮,后台执⾏python,点击【结果】,页⾯下⽅显⽰python的运⾏结果,如下图所⽰
⽅法:原理是python将执⾏结果写⼊⼀个txt⽂件中,html再读取txt,将结果显⽰出来
python代码,命名test3.py
html代码,命名test3.html 1
# ⽰例代码:⽣成⼀个随机数并写⼊(每次重写)txt 2
3
import random 4
5
number = random.randint(1,10)6
7
f = open('','w')8 f.write(str(number))9 f.close()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论