【方法】HTML网页调用本地Python程序

欢迎支持个人chatgpt:https://chat.immuseai.com/register?promotion-code=pRE9p9DXCOBz3Z1s。注册即可使用GPT3.5和4.0。

代码已上传github


首先声明,在HTML中调用本地Python程序是十分不推荐的,一是因为网页调用本地程序的权限正在被取消,二是因为真不如JS写直接,三是只能在自己本地调用。

但如果你要用,像我一样,需要在课堂上进行一个Python代码的展示,并且想要一个好看的UI界面的话,可以这样来做,做起来还是很容易的,但这样的展示仅限于需要弹框的,比如我的人脸检测是弹窗式,如果需要内嵌在网页内部的话是不行的。

我所使用的环境是 windows+python3

一、编写你的python代码

我们就先写一个简单的吧(这个能让你很容易地看到效果),命名为test2.py,写入代码:

import osfile = open('new_file' + '.txt','w')
file.close()

注意:这一步在测试1中不用 

二、编写你的HTML代码

完整代码在后面,这里是方法介绍。其中的重点部分在于java脚本中写的一个函数(function exec1),你不用改,后面调用了这个函数。你只需要修改你需要执行的文件名,下面就是调用的方法:

exec1('python hello.py')
# 括号内的意义是 用 python 来执行 hello.py 这个文件,!注意python是已经添加到环境变量了的。
# 执行python程序一般有两个exe方法,一个是直接的python,另一种是pythonw,两者的区别是:用python执行会先打开一个命令行的黑窗,而pythonw不会弹出黑窗(比如你要执行一个输出的程序,就没法显示出来了)# or use this exec1('cmd')
# 括号内的意义是 直接执行 cmd 这个可执行文件。同理你把python文件打包成exe文件也是可以直接采用这种方法的。

测试1完整代码在这里,新建一个html文件,命名test1.html

<!DOCTYPE html>  
<html>  <head>  <meta charset="utf-8">  <script language="javascript">     function exec1(command) {     var ws = new ActiveXObject("WScript.Shell");      ws.run(command);}     </script>   </head>  <body><div id="header"><h1>打开python命令行</h1></div><div id="nav1">打开python命令行(方式1)<button onclick="exec1('python')">运行 python</button></div><div id="nav2">打开python命令行(方式2)<input type="button" value="运行 python" onclick="exec1('python')" /></div></body> 
</html> 

测试2完整代码在这里, 命名test2.html:

<!DOCTYPE html>  
<html>  <head>  <meta charset="utf-8">  <script language="javascript">     function exec1(command) {     var ws = new ActiveXObject("WScript.Shell");      ws.run(command);}     </script>   </head>  <body><div id="header"><h1>运行python</h1></div><div id="nav1">执行test2程序(方式1)<button onclick="exec1('python test2.py')">运行 python</button></div><div id="nav2">执行test2程序(方式2)<input type="button" value="运行 python" onclick="exec1('python test2.py')" /></div></body> 
</html> 

三、测试

1、首先测试ActiveX使用正常!只需要HTML文件,不需要python文件,存放位置也随意。

      chrome浏览器看步骤①~⑤(5步);ie浏览器看步骤⑥~⑨(4步)

     ①在chrome拓展程序中安装一个名为IE TAB的拓展程序

     ②用chrome浏览器打开test1.html文件

     ③点击右上角IE Tab启动IE内核,启动IE TAB后会弹出这个警告,你需要点击同意

      ④点击网页界面中的运行代码的button,还会弹出一个警告,你也需要点“是”

       ⑤最后弹出下面这样的python的命令行黑框就验证成功了!

       ⑥用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文件放在桌面上

      ④重复前面类似操作

    如果在对应的的地址下新建了一个new_file.txt的文件就说明验证成功了。


!!!注意如果遇到弹出黑框一闪就消失了,说明几点问题,请注意排查:

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

# 示例代码:生成一个随机数并写入(每次重写)txtimport randomnumber = random.randint(1,10)f = open('number.txt','w')
f.write(str(number))
f.close()

html代码,命名test3.html

<!DOCTYPE html><head><meta charset="UTF-8"><script language="javascript">function exec1(command) {var ws = new ActiveXObject("WScript.Shell");ws.run(command);}</script>
</head><body><div id="header"><h1>读取python运行的结果</h1></div><!-- 按键开始执行python程序 --><div id="program1">执行test3程序(方式1)<button onclick="exec1('python test3.py')">运行 python</button></div><div id="program2">执行test3程序(方式2)<input type="button" value="运行 python" onclick="exec1('python test3.py')" /></div><!-- 读取python运行结果 --><!-- 链接的 target 属性必须引用 iframe 的 name 属性 --><div id="result"><p><a href="number.txt" target="result">结果</a></p><iframe name="result" width="100" height="30" scrolling="no" frameborder="3"></iframe></div></body></html>

使用方法同上即可。

实现效果2:输入点击显示

python代码,命名test4.py

# 读取生成的input.txt内容
f1 = open('input.txt') # 读取的数据类型为str
number1 = int(f1.read())# 执行你要执行的程序(例子为计算平方)
number2 = number1 * number1# 把运行的结果写入result.txt中
f2 = open('result.txt', 'w')
f2.write((str(number2)))f1.close()
f2.close()

 html代码,命名test4.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><script language="javascript">function exec1(command) {var ws = new ActiveXObject("WScript.Shell");ws.run(command);}function input() {text = document.getElementById("data").value;  //获得网页文本框的值var strFile = "input.txt";	//定义文件保存的路径var objFSO = new ActiveXObject("Scripting.FileSystemObject");var objStream = objFSO.CreateTextFile(strFile, true);objStream.Write(text);  //写值objStream.Close();}</script>
</head><body><div id="header"><h1>对输入值进行平方计算</h1></div><!-- 在文本框内输入一个数字,点击输入完毕按钮,将在本地生成一个input.txt,内容为输入的数字 --><div id="input"><input id="data" type="text" value="22" /><p></p><input type="button" value="输入完毕" onclick="input()" /></div><p></p><!-- 点击运行Python按钮,将本地执行test4.py程序 --><div id="program1">执行test3程序(方式1)<button onclick="exec1('python test4.py')">运行 python</button></div><div id="program2">执行test3程序(方式2)<input type="button" value="运行 python" onclick="exec1('python test4.py')" /></div><!-- 点击结果, 将在框内显示出计算的结果--><div id="result">	<p><a href="result.txt" target="result">显示结果</a></p><iframe name="result" width="100" height="30" scrolling="no" frameborder="3"></iframe>	</div><p></p><div id="result">使用说明:文本框输入一个数字,然后依次点击 [输入完毕] [运行python] [显示结果]</div>
</body></html>

2、拓展二

实现效果:人脸检测,人脸识别等网页交互界面

因为这个项目就是我在完成这样一个课程作业时的突发奇想,下面就是完整界面和程序。

完整代码下载:

https://github.com/yzy1996/Face-Detection   

用法是:

拖到上面提到的IE TAB目录下,执行html文件,同上步骤,即可。


有问题欢迎留言,好想给大家做一个录屏,后面再说吧,可以联系我手把手教你。

关于我:关于我自己_yzy_1996的博客-CSDN博客

为了更快地帮助你,请按照如下格式描述你的问题:

你所使用的浏览器(Chrome/IE)+ 测试1/2是否都通过 + 你的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16258.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大咖云集,AI人才成长论坛圆满落幕!

Datawhale论坛 方向&#xff1a;人才成长论坛&#xff0c;全球人工智能开发者先锋大会 2023年2月26日晚&#xff0c;“2023全球人工智能开发者先锋大会”&#xff08;GAIDC&#xff09;落下帷幕。2月26日上午&#xff0c;此次大会的主要分论坛之一“AI人才成长论坛”顺利召开。…

AI 救不了好莱坞,16 万演员联合编剧上演史诗级「罢工大戏」

内容一览&#xff1a; 近日&#xff0c;美国演员工会正式加入编剧工会行列&#xff0c;开始举行罢工&#xff0c;由此&#xff0c;被多家媒体称为好莱坞「末日」时刻来临。值得关注的是&#xff0c;本次罢工的原因&#xff0c;除了老生常谈的薪资问题&#xff0c;还有一个重要的…

【2023年电工杯数学建模竞赛B题人工智能对大学生学习影响的评价】完整思路分析+完整代码

1.问题背景与描述 这道题整体还是相对简单的&#xff0c;比较适合新手&#xff0c;选的人多对应获奖数量也会多&#xff0c;所以不要纠结于选题&#xff0c;就选你看上去能做的就好 2.问题分析 2.1 问题一的分析 对附件2中所给数据进行分析和数值化处理&#xff0c;并给出处…

【2023年电工杯数学建模竞赛】选题分析+A题B题完整思路+代码分享

2023年电工杯B题&#xff08;附带ChatGpt思路&#xff09;思路已更新&#xff0c;请点击一下链接 【2023年电工杯数学建模竞赛B题人工智能对大学生学习影响的评价】完整思路分析完整代码&#xff08;附带ChatGpt思路&#xff09; 1.竞赛介绍 2.本次大赛选题分析 首先大家要清…

【数学建模】 非线性规划+二次规划

非线性规划概念和实例 如果目标函数或约束条件中包含非线性函数&#xff0c;就称这种规划问题为非线性规划问题。一般说来&#xff0c;解非线性规划要比解线性规划问题困难得多。而且&#xff0c;也不象线性规划有单纯形法这一通用方法&#xff0c;非线性规划目前还没有适于各…

【数学建模】 MATLAB 蚁群算法

蚁群算法 MATLAB–基于蚁群算法的机器人最短路径规划* https://blog.csdn.net/woai210shiyanshi/article/details/104712540?ops_request_misc%257B%2522request%255Fid%2522%253A%2522168853912916800215023827%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fa…

chatgpt赋能python:Python中怎样输入数据以及数据类型

Python中怎样输入数据以及数据类型 Python是一种高级编程语言&#xff0c;常用于数据处理和分析、机器学习和Web开发等任务。输入数据是Python编程中的重要环节&#xff0c;因此本文将介绍Python中输入数据的方法和数据类型。 什么是数据输入&#xff1f; 数据输入是指将数据…

数学建模比赛是时候该转型了

目录 **背景****测试一&#xff1a;国赛C题类型****测试一总结****测试二&#xff1a;国赛B题****测试二总结****结论** 背景 7 月 9 日消息&#xff0c;OpenAI 的语言模型 ChatGPT 最近推出了新功能&#xff1a;代码解释器&#xff08;Code Interpreter&#xff09;。这个新功…

ChatGPT为什么使用强化学习

最近出现很多ChatGPT相关论文&#xff0c;但基本都是讨论其使用场景和伦理问题&#xff0c;至于其原理&#xff0c;ChatGPT在其主页上介绍&#xff0c;它使用来自人类反馈的强化学习训练模型&#xff0c;方法与InstructGPT相同&#xff0c;只在数据收集上有细微的差别。 那么&…

技术沙龙 | 探索软件测试前沿技术及最佳实践,体验ChatGPT在测试领域中的应用!...

作为软件开发领域中至关重要的一环&#xff0c;软件测试的重要性日益凸显。然而&#xff0c;随着软件测试开发技术的不断发展&#xff0c;软件测试也面临着越来越多的挑战&#xff0c;为了更好地应对这些挑战&#xff0c;测试人社区将持续举办技术沙龙活动&#xff0c;为测试人…

【自然语言处理】【ChatGPT系列】Chain of Thought:从大模型中引导出推理能力

Chain-of-Thought Prompting&#xff1a;从大模型中引导出推理能力 《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》 论文地址&#xff1a;https://arxiv.org/pdf/2201.11903.pdf 相关博客 【自然语言处理】【ChatGPT系列】WebGPT&#xff1a;基于…

真正拖垮你的,是沉没成本

— 1— 沉没成本谬误 沉没成本指的是那些发生在过去&#xff0c;我们无法去收回或改变的付出。 这些付出&#xff0c;包括且不限于金钱、时间、精力、感情等等。 其实&#xff0c;你还会遇到很多类似情况。 不想浪费白等的时间&#xff0c;不愿意打车&#xff0c;心想再坚持…

【报名】智慧金融,以技术红利创造财富价值丨直播预告

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着科技的快速发展和数字化时代的到来&#xff0c;金融行业也正面临着前所未有的变革和机遇。在这个变革的浪潮中&#xff0c;智慧金融作为引领金融科技创新的关键力量&#xff0c;正成为行业的焦点。在数字经济和人工智能…

如何快速入门 Java?

在一线互联网公司做开发 13 年了&#xff0c;“精通”Java&#xff0c;“吊打”一众面试官&#xff0c;如何快速入门 Java&#xff0c;对我来说简直就是小儿科&#xff0c;相信看完后你一定能收获满满、醍醐灌顶&#xff0c;今年秋招拿下阿里、美团等互联网大厂的 offer。 逼装…

深度:全面解析数据智能的金融“炼金术”!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 金融以其财富效应&#xff0c;成为最新科技的试金石。一项新技术出来后&#xff0c;人们首先闪过的念头就是“能不能用它赚钱”。例如&#xff0c;ChatGPT带火了大模型&#xff0c;人们也开始将目标聚焦到大模型在金融领域的…

市场营销人员如何使用ChatGPT提升效能?

在如今竞争激烈的市场环境下&#xff0c;市场人的工作备受挑战。他们需要了解和掌握不同的市场趋势和客户需求&#xff0c;制定和调整各种营销策略以适应日益变化的市场环境。 此外&#xff0c; 市场运营人员还需要通过各种渠道和方式&#xff0c;进行品牌宣传、客户服务、销售…

ChatGPT+Xmind精美导图,炸裂了!

用ChatGPT做的Java学习路线思维导图&#xff0c;先看效果 1、输入问题【Java学习路线】&#xff0c;并且后面要加【请用代码形式呈现】 2、输出结果后&#xff0c;点击拷贝代码copy code 3、新建一个txt文档&#xff0c;然后把代码拷贝进去&#xff0c;效果图如下&#xff0c;拷…

【人工智能大模型】一文彻底讲透——什么是 PPO(Proximal Policy Optimization,近端策略优化)?

文章目录 什么是 PPO(Proximal Policy Optimization,近端策略优化)?PPO 简介PPO 算法流程PPO 的数学公式PPO 算法原理如何在实际应用中使用PPO算法?什么是近端优化?怎样进行近端优化的?什么是 KL 散度?ppo2.py什么是 PPO(Proximal Policy Optimization,近端策略优化)…

Vue知识点整理(待更新)

Vue知识点整理&#xff08;待更新&#xff09; 参考Vue.js中文官网&#xff0c;Vue 知识点汇总&#xff08;上&#xff09;–附案例代码及项目地址&#xff0c;Vue 知识点汇总&#xff08;下&#xff09;–附案例代码及项目地址&#xff0c;Vue知识点汇总【持更】 文章目录 Vu…

开源节流皆不易,水滴再“画AI大饼”能否充饥?

收并购以实现规模扩张&#xff0c;会是水滴的解药吗&#xff1f; 日前&#xff0c;水滴公司公告称将战略投资深圳存真求实科技有限公司&#xff08;即“深蓝保”&#xff09;&#xff0c;分阶段完成&#xff0c;第一阶段占股56%。 深蓝保是一家以微信公众号、小程序为载体&am…