利用python制作C语言在线编译器的小案例

电子说

1.2w人已加入

描述

 大家好,我是牛牛。  今天给大家分享一下利用python制作C语言在线编译器的小案例,主要包含以下几部分内容:
  • 项目构想与准备

  • 搭建python服务器

  • 前端页面

  • 后台逻辑实现

 
 

一、项目构想与准备

 

目标:使用python+codeMirror制作一款类似菜鸟教程的在线编译器。

 

1.1 项目架构

 

python

 

1.2 开发环境

windows系统

python 3.7.1

mingw-get-setup

 

1.3 技术栈

bootstrap构建前端页面

codeMirror代码编辑器插件

flask框架搭建后端服务器

 

1.4 环境准备

安装mingw-get-setup,下载地址:

https://sourceforge.net/projects/mingw/

 

安装成功后安装gcc,具体操作参考:

https://www.cnblogs.com/liangliangge/p/14737419.html

 

确保能在windows下运行gcc命令。

 

python

 

 

 

二、搭建python服务器

 

2.1 新建项目

 

使用python自带的venv新建虚拟环境。

 

python

 

激活虚拟环境,安装flask,本项目采用pycharm开发,因此在settings配置项中选择当前目录下的venv下的python.exe。

 

python

 

安装命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask

 

python

 

新建server.py,书写如下代码:

 

python

 

运行命令,flask run开启服务。

 

python

 

访问:http://127.0.0.1:5000

 

python

 

到此,服务端先告一段落。

 

 

 

三、前端逻辑与代码实现

 

3.1 项目中引入bootstrap

 

在bootstrap官网中下载bootstrap3.4.1,并将代码包放在项目目录下。

 

python

 

3.2在pages下新建index.html页面引入bootstrap.

 

 

 

python

 

3.3 使用bootstrap构建前端页面

 

 

 

python

 

 

 

3.4添加codeMirror代码编辑器

 

下载地址:https://codemirror.net/5/

添加到项目中

 

 

 

python

 

 

 

页面引入

注意引入的顺序

 

 

 

python

 

python

 

 

 

 

 

 

python

 

 

 

 

 

 

3.5 首页路由加载页面

 

设置模板文件夹和静态资源文件夹,引入render_template,渲染静态模板

 

 

 

python

 

 

 

修改页面静态资源路径 

 

 

 

python

 

python

 

python

 

 

 

3.6 获取代码发送服务端

 

点击run按钮获取代码 

 

 

 

python

 

 

 

 

python

 

python

 

 

 

渲染获取结果 

 

 

 

python

 

python

 

 

 

 

 

四、服务端处理代码

 


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

 

python

 

代码地址:git@gitee.com:amyliyanice/c-editor-online.git

 


 

牛牛IT充电站

日常分享热门、有趣和实用的编程技术与编程案例,包括:嵌入式、物联网、小程序、python、C/C++、JS、CSS、Nodejs、PHP等。

 

审核编辑 :李倩

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分