精华内容
下载资源
问答
  • Python代码生成
    2020-12-19 11:40:08

    自动代码生成通常通过以下方式完成:打印包含代码片段的语句

    带占位符的文本模板(考虑宏)

    IMHO,更好的做法是:为目标片段构建AST,然后预打印

    几乎没有人做后者,因为工具大多不在那里。

    Python的2to3工具提供(我认为)目标AST和预打印。

    但你没有问的问题是“从什么产生?”无论如何你必须说明

    抽象地说,你想产生什么(或者它不是一个胜利)。你的工具必须能够以某种方式阅读规范。

    许多代码生成方案由编写调用上述生成机制的过程代码组成;过程代码充当隐式规范。阅读规范是“容易的”;它只是代码生成器使用的语言中的代码。

    一些代码生成方案使用某种图形结构来提供一个框架,在该框架上挂起规范的片段,从而驱动代码生成。UML类图是一个典型的例子。这些方案并不那么容易;你需要一个“规范读取器”(例如,UML图读取器,又名XMI或其他类似的读取器,或者如果你不使用UML,某种规范解析器),然后你需要一些东西,以某种有用的顺序(UML是图,有很多不同的访问方式)爬过刚刚读取的规范,进行调用关于代码生成步骤。

    Python 2to3工具使用Python2解析器读取“spec”。如果您想从Python2生成代码,那就可以了。我想你不想那样做。

    最佳实践方法是将读取/分析/遍历规范的能力与为目标语言生成AST的能力结合起来的方法。

    我们的DMS Software Reengineering Toolkit是一个通用的程序分析和转换系统。它将“规范”(您可以定义的语法实例)解析为AST;它还允许您使用过程代码(如上面所示)或使用模式匹配/替换(DMS非常独特)为这些语法中的任何一个构建任意的AST。DMS langauge前端的一部分是prettyprinter,它可以从AST重新生成文本(通过往返代码测试:parse to AST,prettyprint AST,better be the same text)。

    如果DMS不知道您的语法,它有非常好的解析器和预打印生成器,以及其他分析程序的支持机制。所有这些额外的机制通常都不适用于经典的解析器生成器,或者仅仅是一个简单的“AST”包。(我不知道2to3里面是什么)。

    因此,您可以使用DMS解析您的规范,并使用ASTs生成Python代码,最后是prettyprinting。

    更多相关内容
  • 主要为大家详细介绍了Python自动生成代码使用tkinter图形化操作并生成代码框架,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python-tkinter,诚实告诉大家,这个工具的有些不顺手,建议大家不要买。否则被坑不要骂我(^U^)ノ~YO
  • 既然PythonC实现的,那为什么Python不能直接生成exe呢?C语言其实是一种比较“古老”而且“底层”的语言。其执行效率,仅次于汇编语言。说其古老,是因为C语言的出现很早。虽然Fortran、Cobol语言出现比C语言更...

    既然Python是用C实现的,那为什么Python不能直接生成exe呢?

    C语言其实是一种比较“古老”而且“底层”的语言。其执行效率,仅次于汇编语言。

    说其古老,是因为C语言的出现很早。

    虽然Fortran、Cobol语言出现比C语言更早,但是现代主流操作系统(Windows、Mac Os、linux、iOS、Android、Unix)全部脱胎于C语言。

    说它底层,是因为C语言设计之初就是为了同时编写汇编语言。理论上可以全部用汇编写。而汇编语言是执行效率最高的语言。

    所以Python用C语言写一点也不奇怪。这和它能不能生成Exe一点关系都没有。

    Exe文件是Windows平台的私有格式。最简单的Exe是Com可执行文件。Exe文件实际上是一个引导程序 一个解释程序组成的。

    Python语言生成的代码,只需要配以引导程序和解释程序,就可以作为Exe文件执行。

    所以,Python生成Exe文件一点难度都没有。只是它愿不愿意提供的问题。

    代码一定要人去写吗,能不能用Python弄个人工智能来写C ?

    人:请帮我编写一个软件。

    电脑:我可以编写100万种软件,请问你要哪一种?

    人:我想编写一个聊天工具。

    电脑:我检索到了现成的软件微信,是不是可以?

    人:帮我打造一个全新的

    电脑:好的,启动界面要什么样的?

    人:我不知道,请随意

    电脑:程序图标要什么样的?

    人:不知道,请随意

    电脑:既然随意你还是用微信吧

    人:我就想要打造一个新的

    电脑:好吧,图标先给你空着,我们来做第一页,你要用哪种布局?

    人:上中下三段布局

    电脑:三段的高度和比例是多少?用什么颜色?

    人:不知道

    电脑:你必须知道,否则我无法继续

    人:我如果什么都知道我就是程序员了

    电脑:我怎么知道你脑子里想的是什么?你还是用微信吧,我不干了

    人:你信不信我砸了你?

    电脑:你不是程序员你跟我BB什么

    如何用python代码生成pdf格式的合同文件?

    可以使用 pdfkit

    功能:

    1.wkhtmltopdf主要用于HTML生成PDF。

    2.pdfkit是基于wkhtmltopdf的python封装,支持URL,本地文件,文本内容到PDF的转换,其最终还是调用wkhtmltopdf命令。是目前接触到的python生成pdf效果较好的。

    python代码生成器怎么用?

    生成器(generator)概念生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。

    生成器语法生成器表达式: 通列表解析语法,只不过把列表解析的[]换成()生成器表达式能做的事情列表解析基本都能处理,只不过在需要处理的序列比较大时,列表解析比较费内存。

    python如何调用pyqt生成的代码?

    保存为.ui的文件后,可以从pyqt的代码文件里直接引用。具体实现,如果你是在win下装的会自带Pyqt的demo,参看下源码就可以,如果是Unix里,可以去官网下份单独的tar.gz的包,里面也有demo部分的源码实我是用Vala写GTK的,我自己是用直接在代码里写布局的,不用可视化的布局方案,当然后者性能会更好一些但是可以忽略不计,有更好的可控性是真的。pyuic4 可以把 ui 文件编译成 py 文件,然后直接引用

    能否利用python代码生成sshkey?

    可以的。使用python的Paramiko模块,调用 paramiko.rsakey.RSAKey.generate (Python static method, in Key handling) 这一静态方法,就可以生成RSA秘钥。

    Python前端代码生成器?

    生成器是一个包含了特殊关键字yield的函数。当被调用的时候,生成器函数返回一个生成器。可以使用send,throw,close方法让生成器和外界交互。

    展开全文
  • python 自动生成动态变量及应用 在这里我们需要exec函数 exec(object[, globals[, locals]]) object:(必填)表示需要执行的Python代码 globals:(选填)表示全局命名空间 locals:(选填)表示当前局部命名...
  • 但是担心这种做法由于反射有性能较低之嫌,因此暂时不作考虑,转而使用下面这种利用Python自动生成代码的方法。 利用Python读取文件,正则查询带有某些标签或者注释的变量,把这些变量收集起来,然后替换原文件的...

    项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用。对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量。例如有一个变量m_iMyVal,在Copy方法中需要维护this.m_iMyVal = data.m_iMyVal;在IsEqual方法中需要维护if(this.m_iMyVal != data.m_iMyVal) return false;...等等。当子类中的变量一旦多了,譬如一个类中拥有十余个甚至更多这样的变量,并且日后有可能删除或添加,维护起来就有点痛苦了,因为需要在两处都补充对应的方法,而且每一个都不能写漏写错。

    这些子类一般都是数据类,在编写代码的时候往往是一口气写相当多的变量,如果写一个然后到两个地方编写对应的代码,这样可能的确出错率比较低,但是很容易打断思路;但是把所有变量写完后再去补充代码,就会有写漏写错之嫌,一旦写漏当时可能没有bug,后期查错起来非常痛苦,从而导致开发效率下降。另外麻烦的一点在于,不同类型的变量,比较方法和拷贝方法可能不尽相同(如浮点数需要eps,list需要循环比较等等)。

    那么有没有写一个变量然后告诉系统这个变量是需要在比较和拷贝方法中补充代码的,然后有“人”帮我自动补充上去呢?由于笔者使用的是C#语言开发,自然而然想到了添加标签的方法,之后通过反射找到所有带有这种标签的成员变量,在比较和拷贝方法中直接进行操作即可。

    但是担心这种做法由于反射有性能较低之嫌,因此暂时不作考虑,转而使用下面这种利用Python自动生成代码的方法。

    利用Python读取文件,正则查询带有某些标签或者注释的变量,把这些变量收集起来,然后替换原文件的比较和拷贝方法即可。

    那么工作流就变成了:

    1.写需要的成员变量

    2.如果需要自动为其生成代码,则添加对应的标签(不采用注释的方法是因为标签可以被自动补全,防止正则找错)。

    3.执行批处理文件,自动把需要的文件生成代码(如果之前有这部分代码,则是替换)。

    整个过程几乎不耽误什么时间,但是自动生成代码使得开发效率大大提升。

    Python源码如下:

    1 #-*- encoding:utf-8 -*-

    2

    3 importos4 importsys5 importre6

    7

    8 defprocess_file(path):9 keyword = 'debug_util.'

    10 modify_flag =False11

    12 auto_start = "// python automatic generation start"

    13 auto_end = "// python automatic generation end"

    14 normalLabel = "\[NormalLabel\]"

    15 floatLabel = "\[FloatLabel\]"

    16 vec3Lable = "\[Vec3Label\]"

    17

    18 normalCmp = "[NormalLabel]"

    19 floatCmp = "[FloatLabel]"

    20 vec3Cmp = "[Vec3Label]"

    21

    22 with open(path, 'rb') as f:23 txt =f.read()24 #print ("txt is " + txt)

    25 pattern = "(%s|%s|%s)[\s\S]+?public\s+\w+\s+(\w+)" %(normalLabel, floatLabel, vec3Lable)26 matchStr =re.findall(pattern, txt)27 #print (matchStr)

    28 labelList =[]29 varList =[]30 for i, packed inenumerate(matchStr):31 labelName =packed[0]32 varName = packed[1]33 labelList.append(labelName)34 varList.append(varName)35 #print (labelName + ".." + varName)

    36

    37 #开始找类的名称

    38 pattern = "public class (\w+)\s*:\s*SkillBaseData"

    39 matchStr =re.findall(pattern, txt)40 className = ""

    41 for i, packed inenumerate(matchStr):42 className =packed43 break #类名只会有一个

    44

    45

    46 ## 找注释部分

    47 index =048 begin = txt.find(auto_start, index) +len(auto_start)49 end =txt.find(auto_end, index)50 copyContent = ""

    51 equalContent = ""

    52 for labelName, varName inzip(labelList, varList):53 copyContent += "\t\t\tthis." + varName + "= data." + varName + ";\n"

    54 if labelName ==normalCmp:55 equalContent += ("\t\t\tif(this.%s != data.%s) return 1;\n" %(varName, varName))56 elif labelName ==floatCmp:57 equalContent += ("\t\t\tif(FloatNotEqual(this.%s, data.%s)) return 1;\n" %(varName, varName))58 elif labelName ==vec3Cmp:59 equalContent += ("\t\t\tif(Vec3NotEqual(this.%s, data.%s)) return 1;\n" %(varName, varName))60

    61

    62 auto_code = ""

    63 auto_code += (("\n\t\tpublic override void CopyDataFrom(SkillBaseData baseData)\n\t\t{\n\t\t\tvar data = (%s)baseData;\n" % className) + copyContent + "\t\t}\n")64 auto_code += (("\n\t\tpublic override int IsEqual(SkillBaseData baseData)\n\t\t{\n\t\t\tvar data = (%s)baseData;\n" % className) + equalContent + "\t\t\treturn 0;\n\t\t}\n")65 print (txt[:begin] + auto_code +txt[end:])66 new_txt = txt[:begin] + auto_code + "\t\t" +txt[end:]67 with open(path, 'wb') as f:68 f.write(new_txt)69

    70 defokPath(path):71 if path.endswith("TestSkillData.cs"):72 returnTrue73

    74 returnFalse75

    76 if __name__ == '__main__':77 cwd =os.getcwd()78 _len = len(cwd) - 22 #22是最后一级目录的长度,在这里是魔法数字,据需求而改动,当然也可以用其他方法找到需要的目录= =。

    79 cwd = cwd[:_len] + 'SkillDerivedData'

    80 print(cwd)81 #cwd = cwd + '/Package/Script/Python/'

    82 directiory =os.walk(cwd)83 for root, dirs, files indirectiory:84 for f infiles:85 ifokPath(f):86 process_file(os.path.join(root, f))87 #print("name is " + f)

    Python自动生成代码工具

    写完C#直接跑下面这个bat即可。

    最后生成代码的效果如下图所示,感觉还算比较美观的= =。(针对三种不同的标签提供了不同的处理方法):

    总的来说,学会了一种新的处理问题的方法,收获挺大的。最后感谢一下教会我这种方法的@仓鼠和提供正则帮助的@聪哥。

    展开全文
  • 应急的随手创作,使用了“文件操作”和“生成随机数”的功能。比较简陋。后期扩展可以考虑搭配个数据库。 复制代码 代码如下: # -*- coding: cp936 -*- import random title=’XXX周例会\n会议时间: ‘ timelist=...
  • 先说明一下整个计划,分成两个部分,自动生成需要的代码编译下载,验证代码的正确性 希望能够通过这样的自动化方式,在芯片复合引脚测试上可以减低重复劳动,并且完善代码自动生成IDE。 1. 自动打开、编译、下载: ...

    0 绪

    先说明一下整个计划,分成三个部分,

    1. 自动生成需要的代码编译下载,
    2. 验证代码的正确性
    3. 硬件部分的实现

    这样自动化方式,在芯片测试上减少重复劳动,并且完善代码生成IDE工具。

    1. 自动打开、编译、下载:

    1.1 自动打开工程,打开软件

    下面代码是通过绝对路径来打开Keil工程

    import subprocess
    import os
    main = "C:/Users/siyu/.PyCharmCE2019.1/config/scratches/two/main.uvproj"
    if os.path.exists(main):
        rc,out= subprocess.getstatusoutput(main)
        print (rc)
        print ('*'*10)
        print (out)
    

    参考:
    python中3种调用可执行文件.exe的方法

    python实现对windows窗口的操作需要涉及到的库有ctypes 、win32GUI、pywin32、win32con等,这些还需要继续丰富知识。

    1.2. 自动点击编译,下载按钮,

    使用python实现打开工程文件,使用python中的pyautiogui实现对按键的定位

    包的安装

    pip install pyautogui
    
    import pyautogui
    #判定目标截图在系统上的位置,两个方式都可以实现
    #location=pyautogui.locateOnScreen(image='autotest.png')
    location=pyautogui.locateOnScreen(image='C:/Users/siyu/Pictures/autotest.png')
    #输出坐标
    print(location)
    #利用center()函数获取目标图像在系统中的中心坐标位置
    x,y=pyautogui.center(location)
    print('center()',x,y)
    
    #对识别出的目标图像进行点击
    #参数x,y代表坐标位置,clicks代表点击次数,button可以设置为左键或者右键
    pyautogui.click(x=x,y=y,clicks=1,button='left')
    

    这个已近实现了基于GUI上的操作,区别在与点击不同的按键,需要动态增加按钮。

    参考代码
    使用的
    【pyautogui】利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)

    其他
    【Python】通过截图匹配原图中的位置(opencv)
    pyppeteer(六)–通过opencv查找图片在另一张图片的位置

    2. 自动写代码

    这个分成三个部分
    a)实现工程中添加C文件
    b)对C文件中的代码进行更改
    C) 优化后GUI的实现

    2.1 对工程进行更改

    实现步骤:
    文本方式打开工程文件 >>>添加文件

    实现对工程文件的读取,并且存到str数组中

    f = open("main.uvproj","r")   #设置文件对象
    
    str = f.read()     #将txt文件的所有内容读入到字符串str中
    print(str)
    f.close()   #将文件关闭
    

    实现main字符串的查找,以及输出行号

    findMusic="main";
    MusicLine=0;
    f = open('main.c','r')
    
    for lines in f.readlines():
        MusicLine=MusicLine+1;
        if lines.find(findMusic)!=-1:
            print(lines)
            print("find it .........................")
            print(MusicLine)
        #print(lines,end='')
    f.close()
    
    

    python实现指定行的更改
    代码未验证,应该是python2的代码

    #coding=utf-8
    lines=[]
    f=open("d:\\1script\\1.txt",'r')  #your path!
    for line in f:
        lines.append(line)
    f.close()
    print lines
    lines.insert(3,"666\n")           #第四行插入666并回车
    s=''.join(lines)
    f=open("d:\\1script\\1.txt",'w+') #重新写入文件
    f.write(s)
    f.close()
    del lines[:]                      #清空列表
    print lines
    
    

    参考代码:
    python如何打开一个txt文件 实现了读写的两个功能。
    python对文件的指定行写入

    2.2 对C文件更改

    实现步骤:打开C文件>>>定位需要更改的位置>>>对比修改库,修改代码>>>保存退出
    需要库函数实现代码的定位,识别出全部代码含义实现困难,只能生成代码区域禁止编辑,

    实现c文件的读取,以及存储到str中

    f = open("main.c","r")   #设置文件对象
    
    str = f.read()     #将txt文件的所有内容读入到字符串str中
    print(str)
    f.close()   #将文件关闭
    

    做成可复制的,

    1. 在指定行插入代码,基于Excel 索引,可以多行插入
    2. 插入的代码可以根据GPIO自动生成和更改关键信息,基于字符查找,或者全局变量更改,映射成不同的gpio。映射关系使用Excel输入。

    PS:上面提到的Excel输入可以换成GUI界面的输入。以及图片直接识别出映射关系。

    3 校验的部分

    实现步骤:
    gpio 读取高低电平>>> 将高低电平上传PC>>>PC根据上传的数据,以及代码编写的部分,得知是否满足要求

    3.1 读取高低电平

    FPGA 的高速口可以实现GHZ的判断,但是需要确认普通IO口最大的读取速度。

    常见接口速度

    接口速度
    IIC100K、400K、1M、3.4M等
    SPI50M max?\STM32 最大18M
    SATA1.0—1.5Gbps \ 2.0—3Gbps \ 3.0—6Gbps
    UART一般不超过20K?

    一般测试最高速度则是18M,如果富裕的设计的话50M最大即可。如果有高速的要求,需要重新绘制PCB,或者提前对接特定的接口。

    3.2 将电平上传PC

    通过USB的协议上传,常见的有使用特定的USB芯片,实现2.0的传输。基本可以满足需求?

    USB的速度:

    外文名称时间传输速率供电电压供电电流
    USB1.01996年1.5 Mbps(0.12 MB/s) (Low-Speed)5V500mA
    USB1.11998年12 Mbps(1.5 MB/s) (Full-Speed)5V500mA
    USB2.02000年480Mbps(60 MB/s)(High-speed)5V500mA
    USB3.02008年5.0Gbps(500MB/s )(Super-speed)5V900mA
    USB3.110.0Gbps(1000MB/s )(Super-speed)

    USB传输到电脑
    小梅哥:USB2.0 CY7C68013 基于小梅哥ACX720 FPGA开发板,采用了芯片厂家推荐的驱动。
    正点原子达芬奇FPGA开发板

    3.3 上位机接收数据

    这个部分需要开发对应的接收工具,基于USB的学习。这个部分暂时没有相对应的知识储备。

    4 硬件的准备以及连接

    FPGA >>>高速连接器>>> 转接板>>>FPGA子板

    前两个则是买的现成的撒灵思开发板,后面的转接板则是多层板,

    转接板之后可以接实现逻辑分析的FPGA,也可以接现有的电压转换PCB。

    PS:可能遇到的问题:
    a)电压匹配的问题。现有FPGA输出电压都是1.8V,
    b)板子信号衰减的问题

    展开全文
  • agen 一个极简的代码生成器,可以嵌进你自己的项目中
  • Python代码自动生成方法(代码生成器)遇到这种事在工作遇到问题,你需要写很多c++基础数据库类,但这些类是一样的,只不过是添加,删除,修改并检查。如果你手动编写代码,它是费力而容易出错;它可以很容易地通过借贷python...
  • 您是否在学习Python的路程中感觉路程漫漫?是否曾经半途而废? 是否感觉该学的内容众多? 因为先前编过《信手拈来按键帮你来》所以这里秉承了它的理念。 以Delphi语言开发的,内置百款实例代码,从速借鉴、高效开发...
  • 主要介绍了python自动生成model文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
  • python办公自动化源码集锦-自动生成合同数据
  • Python可以读取的任何数据中快速生成重复的C ++,C#或Java代码
  • python自动生成c++代码

    千次阅读 2022-04-26 14:48:27
    采用python编写自动生成C++代码脚本。 import os,sys,re,traceback from datetime import datetime from string import Template def generate(self): tableName = 'students' className = '%sRedisDao' % ...
  • Python代码生成器32位/64位版是一款python代码开发代码生成工具助手,您是否在学习Python的路程中感觉路程漫漫?是否曾经半途而废?是否感觉该学的内容众多?因为先前编过《信手拈来按键帮你来》所以这里秉承了它的...
  • 主要介绍了使用Python自动生成HTML的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 今天小编就为大家分享一篇对python自动生成接口测试的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了详解python脚本自动生成需要文件实例代码的相关资料,需要的朋友可以参考下
  • 生成Python项目的目录结构代码
  • 主要介绍了Python利用sqlacodegen自动生成ORM实体类,结合实例形式分析了Python sqlacodegen安装技巧ORM实体类相关实现技巧,需要的朋友可以参考下
  • 在写某个平台的自动化脚本时,笔者把全部的操作都封装到了两个类中,page.py和commonpage.py:page.py部分代码:classBasePage(object):'''页面基础类'''def __init__(self, driver):self.driver=driverdeffind_...
  • 该程序将文本文件作为输入,并通过分析每个句子来生成问题
  • 简历:使用Python生成简历 每次获得新文凭或发表新文章时,修改简历都非常繁琐且浪费时间,即使使用LaTeX等文档生成器也是如此。 ResumPY将原始.json或.yml文件转换成PDF格式的完全格式化的简历。 您不再需要使用...
  • 主要介绍了使用python脚本自动生成K8S-YAML的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了python 随机生成10位数密码的实现代码,在文中给大家提到了生成随机密码要实现的功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 生成随机尺寸、随机颜色的图片,可以作为垃圾资源使用,可自行调整参数修改尺寸,也可以作为图形验证码代码使用,希望可以帮到有需要的人;
  • Python 自动生成 Word 文档

    千次阅读 2021-01-14 22:30:39
    当然要第三方库啦 :)使用以下命令安装:pip install python-docx使用该库的基本步骤为:1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件)。2.设置文档的格式(默认字体、页面边距等)。3.在文档对象...
  • Fabgen - 一组用于为不同语言生成C 绑定代码Python脚本

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 290,148
精华内容 116,059
关键字:

怎样用python自动生成python代码