vlambda博客
学习文章列表

Flask实现Python在线编辑器(一)

Flask实现Python在线编辑器

导读

看到网上有一些Python 的在线运行编辑工具,一时来了兴趣,想要模仿一下,自己新建一个应用试一下.

前置知识

  • sys:负责程序与Python解释器的交互,提供了一系列的函数和变量,用于控制Python运行时的环境.

sys.argv 接收命令行参数,生成一个List,第一个元素是程序本身路径
sys.exit(n) 推出程序,正常退出exit(0)
sys.version 获取Python解释程序的版本信息
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 标准错误
sys.executable 执行的python路径
sys.platform 返回操作系统平台名称
  • os:提供了非常丰富的方法来处理文件和目录

os.listdir(path) 返回指定路径下的文件和文件夹列表。
os.open(file, flags[, mode]); 用于打开一个文件

测试

在在线运行工具中输入以下内容:

 #!/usr/bin/python
 import sys
 import os
 
 
 print(sys.version_info)
 print(sys.executable)
 
 print(sys.path)
 
 print(os.listdir(sys.path[0]))

反馈信息:

 sys.version_info(major=3, minor=8, micro=1, releaselevel='final', serial=0)
 /usr/local/python-3.8.1/bin/python3
 ['/box', '/usr/local/python-3.8.1/lib/python38.zip', '/usr/local/python-3.8.1/lib/python3.8', '/usr/local/python-3.8.1/lib/python3.8/lib-dynload', '/usr/local/python-3.8.1/lib/python3.8/site-packages']
 ['script.py', 'run']

可以看到有一个script.py文件生成出来,猜测应该是把填入的内容POST写入到一个文件中,然后运行文件,返回结果,测试如下:

 #!/usr/bin/python
 import sys
 import os
 
 
 print(sys.version_info)
 print(sys.executable)
 
 print(sys.path)
 
 print(os.listdir(sys.path[0]))
 
 
 with open("/box/script.py") as e:
  print(e.read())

反馈

 sys.version_info(major=3, minor=8, micro=1, releaselevel='final', serial=0)
 /usr/local/python-3.8.1/bin/python3
 ['/box', '/usr/local/python-3.8.1/lib/python38.zip', '/usr/local/python-3.8.1/lib/python3.8', '/usr/local/python-3.8.1/lib/python3.8/lib-dynload', '/usr/local/python-3.8.1/lib/python3.8/site-packages']
 ['script.py', 'run']
 #!/usr/bin/python
 import sys
 import os
 
 
 print(sys.version_info)
 print(sys.executable)
 
 print(sys.path)
 
 print(os.listdir(sys.path[0]))
 
 
 with open("/box/script.py") as e:
  print(e.read())
 

服务器创建

正好手里有一台云服务器,系统是Ubuntu server 18 ,所以用它来做一个测试环境.

  • 安装anaconda

    我比较习惯于使用anaconda的包管理环境,如果你使用virtualenv 也可以.

    1.在Web浏览器中,转到Anaconda下载页面

    2.下载Bash脚本(由于我的是小水管,下载特别慢,今天就先到这里,估计明天就下载完了)

     $ curl -O https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
      % Total   % Received % Xferd Average Speed   Time   Time     Time Current
                                      Dload Upload   Total   Spent   Left Speed
       1 521M    1 8991k    0     0  14517      0 10:27:53  0:10:34 10:17:19  3148