搭建AI Studio 中Python开发环境

简 介: 测试与完成了基于编写的python小程序“ais”,可以直接直接将TEASOFT中的编辑的python程序通过Windows剪切板发送到AI Studio,自动运行。通过这种方式可以加快AI Studio 程序的开发和测试。

关键词 AIStudioais

AI Studio
目 录
Contents
从TEASOFT到
AI Studio
测试BMLCodelab
Notebook
AIS程序
远程读取文件
浏览器打开文件
刷新与拷贝
总 结

 

§01 AI Studio


   在AI Studio初步建立项目 —— 第一次尝试 初步测试了在AI Studio进行人工智能Python环境的建立。可以看到在Notebook环境下可以实现最方便的交互式程序开发。

▲ 图1.1 AI Studio 终端窗口开发环境

▲ 图1.1 AI Studio 终端窗口开发环境

一、从TEASOFT到AI Studio

1、AI 终端操作

  在AI Studio终端操作,就如同在Linux系统的远程终端对于服务器进行操作一样。可以使用:

  • viedit:命令完成源文件的编译;
  • python:命令执行Python程序;

▲ 图1.1.1 AI Studio终端开发界面

▲ 图1.1.1 AI Studio终端开发界面

2、终端运行程序

  下面程序主要完成:

  • Windows TEASOFT编写的Python程序,拷贝Clipboard
  • AI Studio 打开VI 编辑器,将Clipboard中的程序粘贴到VI中;
  • 存盘,并执行Python运行该程序;
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# AIS.PY                       -- by Dr. ZhuoQing 2021-12-07
#
# Note:
#============================================================
from head import *
import pyautogui
#------------------------------------------------------------
AIStudio_Title = 'BML CodeLab'
string = tspstring2text('aise')
if len(string) > 0: AIStudio_Title = string
filename = 'test.py'
saveonlyflag = 0
outfile = ""
#------------------------------------------------------------
tspcopyclipboard()
filelines = clipboard.paste().split('\r\n')
proclines = []
for l in filelines:
    if l.find('from head import *')     >= 0:
        id = l.find('#>')
        if id > 0:
            outfile = l[id+1:]
        l = ''
    if l.find('from headm import *')    >= 0:
        id = l.find('#>')
        if id > 0:
            outfile = l[id+1:]
        l = ''
    l = l.replace('printf', 'print')
    proclines.append(l)
filelines = '\n'.join(proclines)
#clipboard.copy(filelines)
#------------------------------------------------------------
editfile = tspgeteditfile()
editfile = os.path.basename(editfile).split('.')[0] + '.py'
#------------------------------------------------------------
for s in sys.argv[1:]:
    if s[0] == '>':
        saveonlyflag = 1
        if len(s[1:]) > 0:
            editfile = s[1:] + '.py'
    elif s[0] == ':':
        AIStudio_Title = s[1:]
#------------------------------------------------------------
rect = tspgetwindowrect(AIStudio_Title)
pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2)
#------------------------------------------------------------
def pastefile(filename):
#    tspsendwindowkey(AIStudio_Title, "rm %s\r"%filename, noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "vi %s\r"%filename, noreturn=1)
    clipboard.copy('rm %s\nvi %s\n'%(filename, filename))
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
    clipboard.copy(filelines)
#    time.sleep(.1)
    tspsendwindowkey(AIStudio_Title, "i", noreturn=1)
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
    tspsendwindowkey(AIStudio_Title, "%c"%27, noreturn=1)
    tspsendwindowkey(AIStudio_Title, ":wq\r", noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "\r", noreturn=1)
def runfile(filename):
#    tspsendwindowkey(AIStudio_Title, "clear\r", noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "python %s %s\r"%(filename, outfile), noreturn=1)
    clipboard.copy('clear\npython %s %s\n'%(filename, outfile))
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
#------------------------------------------------------------
pastefile(editfile)
if saveonlyflag == 0:
#    time.sleep(.1)
    runfile(editfile)
#------------------------------------------------------------
printf('\a')
tspfocuswindow("TEASOFT:1")
#------------------------------------------------------------
#        END OF FILE : AIS.PY
#============================================================

  上面程序还需要对原始程序进行如下处理:

  • 将原来程序中 printf 更换成 print
  • 将 原有的 from head import 一行去除;

3、测试程序

(1)测试程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2021-12-07
#
# Note:
#============================================================

from headm import *

import time, math, clipboard, random
from numpy import *


for i in range(10):
    printf('*'*i)


#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================
(2)运行结果

▲ 图1.1.2  自动执行过程

▲ 图1.1.2 自动执行过程

  可以看到该程序完成了从 TEASOFT 编写程序到AI Studio的环境的源文件的传送。

二、测试BMLCodelab

  在 BMLCodeLab中包括有很多可也是用的公共代码片段库,方便面进行使用和操作。下面测试在这个环境下使用ais工具结果。

▲ 图1.2.1 BML CodeLab 环境

▲ 图1.2.1 BML CodeLab 环境

  经过测试,执行效果与AI Studio经典环境是一样的。
▲ 图1.2.2 执行效果与AI Studio经典环境是一样的

▲ 图1.2.2 执行效果与AI Studio经典环境是一样的

 

§02 Notebook


  上面的终端内,无法使用matplotlib函数。但是,使用notebook可以使用该函数。因此,将上面的ais程序进行改造,使其能够是适应与notebook中运行程序。

一、AIS程序

  下面改进的ais程序,会根据BML CodeLab中是否包含 ipynb 字符,确定后面执行的环境是出notebook,还是终端。

1、代码

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# AIS.PY                       -- by Dr. ZhuoQing 2021-12-07
#
# Note:
#============================================================
from head import *
import pyautogui
#------------------------------------------------------------
AIStudio_Title = 'BML CodeLab'
string = tspstring2text('aise')
if len(string) > 0: AIStudio_Title = string
filename = 'test.py'
saveonlyflag = 0
outfile = ""
notebookflag = 0
#------------------------------------------------------------
title = tspgetwindowtitle()
for t in title:
    if t.find('ipynb') >= 0:
        notebookflag = 1
        break
#------------------------------------------------------------
tspcopyclipboard()
filelines = clipboard.paste().split('\r\n')
proclines = []
for l in filelines:
    if l.find('from head import *')     >= 0:
        id = l.find('#>')
        if id > 0:
            outfile = l[id+1:]
        l = ''
    if l.find('from headm import *')    >= 0:
        id = l.find('#>')
        if id > 0:
            outfile = l[id+1:]
        l = 'import matplotlib.pyplot as plt\nfrom numpy import *\nimport math,random,time'
    l = l.replace('printf', 'print')
    proclines.append(l)
filelines = '\n'.join(proclines)
#clipboard.copy(filelines)
#------------------------------------------------------------
editfile = tspgeteditfile()
editfile = os.path.basename(editfile).split('.')[0] + '.py'
#------------------------------------------------------------
for s in sys.argv[1:]:
    if s[0] == '>':
        saveonlyflag = 1
        if len(s[1:]) > 0:
            editfile = s[1:] + '.py'
    elif s[0] == ':':
        AIStudio_Title = s[1:]
#------------------------------------------------------------
if notebookflag == 0:
    rect = tspgetwindowrect(AIStudio_Title)
    pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2)
else:
    rect = tspgetwindowrect(AIStudio_Title)
    pyautogui.click(rect[0]+385, (rect[1]+rect[3])//2)
#------------------------------------------------------------
def pastefile(filename):
#    tspsendwindowkey(AIStudio_Title, "rm %s\r"%filename, noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "vi %s\r"%filename, noreturn=1)
    clipboard.copy('rm %s\nvi %s\n'%(filename, filename))
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
    clipboard.copy(filelines)
#    time.sleep(.1)
    tspsendwindowkey(AIStudio_Title, "i", noreturn=1)
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
    tspsendwindowkey(AIStudio_Title, "%c"%27, noreturn=1)
    tspsendwindowkey(AIStudio_Title, ":wq\r", noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "\r", noreturn=1)
def runfile(filename):
#    tspsendwindowkey(AIStudio_Title, "clear\r", noreturn=1)
#    tspsendwindowkey(AIStudio_Title, "python %s %s\r"%(filename, outfile), noreturn=1)
    clipboard.copy('clear\npython %s %s\n'%(filename, outfile))
    tspsendwindowkey(AIStudio_Title, "v", control=1, noreturn=1)
#------------------------------------------------------------
def pastenotebook(filename, runflag=1):
    tspsendwindowkey(AIStudio_Title, "a", control=1, noreturn=1)
    tspsendwindowkey(AIStudio_Title, "dd", noreturn=1)
    clipboard.copy(filelines)
    tspsendwindowkey(AIStudio_Title, "\r", shift=1,   noreturn=1)
    tspsendwindowkey(AIStudio_Title, "av", control=1, noreturn=1)
    tspsendwindowkey(AIStudio_Title, "\r", shift=1,   noreturn=1)
#------------------------------------------------------------
printf('\a')
if notebookflag == 0:
    pastefile(editfile)
    if saveonlyflag == 0:
        runfile(editfile)
else:
    pastenotebook(editfile)
tspfocuswindow("TEASOFT:1")
#------------------------------------------------------------
#        END OF FILE : AIS.PY
#============================================================

2、测试

(1)测试代码
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2021-12-08
#
# Note:
#============================================================
from headm import *
#------------------------------------------------------------
for i in range(10):
    printf('*'*i)
filename = 'outtext.txt'
with open(filename, 'w') as f:
    for i in range(100):
        f.write('hellohello\n')
#------------------------------------------------------------
t = linspace(0, 100, 1000)
plt.plot(t, sin(t/10))
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================
(2)测试结果

▲ 图2.1.1 在notebook中输出的matplotlib

▲ 图2.1.1 在notebook中输出的matplotlib

 

§03 程读取文件


一、浏览器打开文件

  执行程序会将运行结果存储在局部 text文件中。该文件可以有浏览器打开。

▲ 图3.1  通过新的浏览器打开TEXT文件

▲ 图3.1 通过新的浏览器打开TEXT文件

  在打开的浏览器的Title中包含有文件的名称,这为寻找该窗口提供了帮助。

二、刷新与拷贝

  利用Chrome浏览器的“F5”刷新,可以实时更新文件内容,同时在利用选择拷贝可以将结果读取到Windows。

 

  结 ※


  试与完成了基于编写的python小程序“ais”,可以直接直接将TEASOFT中的编辑的python程序通过Windows剪切板发送到AI Studio,自动运行。

  通过这种方式可以加快AI Studio 程序的开发和测试。


■ 相关文献链接:

● 相关图表链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值