Skip to content
Battlemagnet1Public

About

一个基于Flask的网页应用,可以在浏览器中直接运行Python代码,支持文件拖拽上传和代码执行。

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Python在线代码运行器

一个基于Flask的网页应用,可以在浏览器中直接运行Python代码,支持文件拖拽上传和代码执行。

功能特性

  • 🐍 在线运行Python代码 - 直接在网页中编写和执行Python代码
  • 📁 文件拖拽上传 - 支持将.py文件拖拽到网页中自动加载代码
  • 🎯 代码高亮 - 使用Monaco Editor提供专业的代码编辑体验
  • 🔒 安全执行 - 使用subprocess在隔离环境中执行代码
  • ⏱️ 超时保护 - 30秒执行超时,防止恶意代码
  • 🚫 input()检测 - 自动检测并阻止包含input()的代码执行
  • 🌐 中文支持 - 完全支持中文输入和输出
  • 📱 响应式设计 - 适配桌面和移动设备

快速开始

环境要求

  • Python 3.6+
  • Flask
  • 现代浏览器(支持文件拖拽API)

安装和运行

  1. 克隆或下载项目文件
  2. 安装依赖:
    pip install flask
  3. 启动服务器:
    python app.py
  4. 打开浏览器访问:http://127.0.0.1:5000

使用方法

  1. 编写代码:在左侧编辑器中输入Python代码
  2. 运行代码:点击"运行"按钮执行代码
  3. 查看结果:在右侧输出区域查看执行结果
  4. 文件上传:将.py文件拖拽到编辑区域自动加载代码
  5. 清空代码:点击"清空"按钮重置编辑器

项目结构

.
├── app.py              # Flask后端服务器
├── index.html          # 主页面
├── script.js           # 前端JavaScript逻辑
├── style.css           # 样式文件
├── README.md           # 项目说明文档
├── 使用说明.md          # 详细使用说明
├── 第三方库支持说明.md   # 第三方库支持说明
└── templates/          # 模板目录(备用)
    └── index.html      # 备用模板文件

技术架构

后端 (Flask)

  • 框架:Flask Web框架
  • 代码执行:subprocess模块
  • 安全措施:
    • 临时文件隔离执行
    • 30秒超时限制
    • input()函数检测
    • UTF-8编码强制

前端

  • 编辑器:Monaco Editor(VS Code编辑器核心)
  • 文件处理:HTML5 File API
  • UI框架:原生CSS + JavaScript
  • 主题支持:亮色/暗色主题切换

API接口

POST /run

执行Python代码

请求体:

{
  "code": "print('Hello, World!')"
}

响应:

{
  "success": true,
  "output": "Hello, World!\n",
  "returncode": 0
}

GET /health

健康检查接口

使用限制

  1. input()函数:不支持交互式输入,请使用硬编码值替代
  2. 执行时间:代码执行最多30秒
  3. 文件系统:无法访问服务器文件系统
  4. 网络访问:无法进行网络请求
  5. 内存限制:受服务器资源限制

示例代码

基础示例

# 变量定义和输出
x = 10
y = "Hello World"
print(f"x = {x}, y = {y}")

# 列表操作
numbers = [1, 2, 3, 4, 5]
print(f"列表: {numbers}")

# 中文支持
name = "张三"
print(f"你好,{name}!")

数学计算

# 基础数学运算
a = 15
b = 7
print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} * {b} = {a * b}")
print(f"{a} / {b} = {a / b}")

字符串处理

# 字符串操作
text = "Python在线运行器"
print(f"字符串长度: {len(text)}")
print(f"大写: {text.upper()}")
print(f"小写: {text.lower()}")

故障排除

常见问题

  1. 代码没有输出

    • 确保代码中包含print语句
    • 检查变量是否正确赋值
  2. 中文显示乱码

    • 系统已配置UTF-8编码,正常情况下应该正确显示
  3. input()函数报错

    • 网页环境不支持交互式输入
    • 请使用硬编码值替代input()
  4. 执行超时

    • 代码执行时间超过30秒
    • 优化代码逻辑或减少计算量

错误信息说明

  • "代码执行成功,但没有输出内容":代码正常运行但没有print输出
  • "警告:检测到input()函数":代码包含不支持的input()调用
  • "错误:代码执行超时":代码运行时间过长

开发说明

本地开发

  1. 修改代码后重启Flask服务器
  2. 前端修改直接刷新页面即可

部署建议

  • 生产环境建议使用Gunicorn + Nginx
  • 配置适当的超时时间和资源限制
  • 考虑使用Docker容器化部署

许可证

MIT License

贡献

欢迎提交Issue和Pull Request来改进这个项目。

更新日志

v1.0.0

  • 基础Python代码执行功能
  • 文件拖拽上传支持
  • 代码高亮编辑器
  • 响应式界面设计

About

一个基于Flask的网页应用,可以在浏览器中直接运行Python代码,支持文件拖拽上传和代码执行。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages