大家好,我是牛牛。
今天给大家分享一下利用python制作C语言在线编译器的小案例,主要包含以下几部分内容:
1、项目构建与准备
2、搭建python服务器
3、前端页面与逻辑实现
4、服务端代码逻辑实现
一、项目构想与准备
目标:使用python+codeMirror制作一款类似菜鸟教程的在线编译器。
1.1 项目架构
1.2 开发环境
windows系统
python 3.7.1
virtualenv虚拟环境
mingw-get-setup
1.3 技术栈
Bootstrap3.4.1构建前端页面
codeMirror代码编辑器
flask框架搭建后端服务器
1.4 环境准备
安装mingw-get-setup,下载地址:
https://sourceforge/projects/mingw/
安装成功后安装gcc,具体操作参考:
https://wwwblogs/liangliangge/p/14737419.html
确保能在windows下运行gcc命令。
二、搭建python服务器
2.1 新建项目
使用python自带的venv新建虚拟环境。
激活虚拟环境,安装flask,本项目采用pycharm开发,因此在settings配置项中选择当前目录下的venv下的python.exe.
安装命令:pip install -i https://pypi.tuna.tsinghua.edu/simple flask
新建server.py,书写如下代码:
运行命令,flask run开启服务。
访问:http://127.0.0.1:5000
到此,服务端先告一段落。
三、前端逻辑与代码实现
3.1 项目中引入bootstrap
在bootstrap官网中下载bootstrap3.4.1,并将代码包放在项目目录下。
3.2在pages下新建index.html页面引入bootstrap.
3.3 使用bootstrap构建前端页面
3.4添加codeMirror代码编辑器
下载地址:CodeMirror 5
添加到项目中
页面引入
注意引入的顺序
3.5 首页路由加载页面
设置模板文件夹和静态资源文件夹,引入render_template,渲染静态模板
修改页面静态资源路径
3.6 获取代码发送服务端
点击run按钮获取代码
渲染获取结果
四、服务端处理代码
import subprocess @app.route("/compiler/",methods=['post']) def compiler(): content = request.data with open("./test.c",'w',encoding='utf-8') as f: f.write(str(content,'utf-8')) cmd_order = 'gcc test.c -o test.out && test.out' cmd_p = subprocess.Popen(cmd_order, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd_result = "" for i in cmd_p.stdout.readlines(): cmd_result += i.decode() return cmd_result |
项目托管:
生成requirements.txt
pip freeze >requirements.txt
项目地址:git@gitee:amyliyanice/c-editor-online.git
更多推荐
python小项目:实现C语言在线编译器
发布评论