def

docxtpl模块的word模板替换内容

a 夏天 提交于 2020-12-13 14:29:23
一、介绍 这个包使用两个主要的包: 用于读取、写入和创建子文档 用于管理插入到模板docx中的标记 python-docx模板已经创建,因为python-docx对于创建文档非常强大,但是对于修改文档却无能为力。 这个想法是开始创建一个你想要用microsoft word生成的文档的例子,它可以像你想要的那样复杂:图片,索引表,页脚,页眉,变量,任何你可以用word做的事情。然后,由于您仍然在使用microsoft word编辑文档,所以可以直接在文档中插入类似jinja2的标记。您将文档保存为.docx文件(xml格式):它将是您的.docx模板文件。 现在可以使用python-docx-template从.docx模板和关联的上下文变量中生成任意数量的word文档。 更多高级用法请查看文档,以下是简单示例 https://docxtpl.readthedocs.io/en/latest/#jinja2-like-syntax 二、代码 from docxtpl import DocxTemplate def temp_word(tmep_path,word_apth): tpl = DocxTemplate(tmep_path) # 需要替换内容以key:value的方式进行更换 context = { " name " : " 上海市XXXXXX公司 " , " num "

转:Python 简单串口收发GUI界面

时光总嘲笑我的痴心妄想 提交于 2020-12-13 14:01:40
https://blog.csdn.net/freedom098/article/details/48211567 忙活了三个多小时,连学带做,总算是搞出来了一个具有基本功能的串口通信PC机的GUI界面,Tkinter在python中确实很好用,而且代码量确实也很少,不足的是Tkinter不自带combox,但是幸运的是我下载的2.7版本自带了包含有combox的ttk模块,于是乎问题就顺利解决了。下面是源代码,一些错误提示功能还没有做,目前只是简单地实现了下位机与PC的通信界面,下位机还是用的STM32F103 #encoding=utf-8 __author__ = 'freedom' from Tkinter import * from serial import * import ttk class GUI(Frame): def __init__(self,master): frame = Frame(master) frame.pack() #串口设置相关变量 self.port = 0 self.baudrate = 9600 #串口号提示 self.lab1 = Label(frame,text = 'Serial Number') self.lab1.grid(row = 0,column = 0,sticky = W) #串口号选择下拉菜单 self

基础数据结构 例:栈、队列、链表、数据、字典、树、等

老子叫甜甜 提交于 2020-12-13 10:59:50
栈 stack 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,把另一端称为栈底。向一个栈插入新元素又称作 进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线 性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。 栈可以用来在函数调用的时候存储断点,做递归时要用到栈! 栈的特点: 后进先出,最后插入的元素最先出来。 Python实现 # 栈的顺序表实现 class Stack(object): def __init__ (self): self.items = [] def isEmpty(self): return self.items == []

pyqt5-信号与槽

烈酒焚心 提交于 2020-12-13 09:48:52
个人理解:pyqt5的信号就是C++中事件,比如鼠标单击事件;pyqt5中的槽就是c++事件函数,比如单击之后要去执行的函数 例子一 一个信号连接一个槽 import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class Demo(QWidget): # 1 def __init__(self): super(Demo, self).__init__() #注意:要传入(Demo, self) self.button = QPushButton('Start', self) # 2 self.button.clicked.connect(self.change_text) # 3 def change_text(self): #槽函数 self.button.setText('Stop') #设置按钮显示的文本 self.button.clicked.disconnect(self.change_text) #信号和槽函数解绑,解绑后再单击按钮也不会执行槽函数 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() # 6 demo.show() # 7 sys.exit(app.exec_()) #1

人工智能--语音入门篇

情到浓时终转凉″ 提交于 2020-12-12 21:27:07
前戏 一、 知识储备 1.函数 : def args kwargs def func(参数1,参数2): # def 用来定义函数及函数名,参数1和参数2就是定义时的形参,也就是将来调用函数时必须要传入的参数 变量1 = 参数1+ 参数2 return 变量1 # *args 就是 将未定义且多余的 位置参数记录在内,偷偷的告诉你,args是个元祖,里面记录着你个函数传递的多余位置参数 # **kwargs 就是 将多余的关键字参数记录在内,kwargs 其实是个dict哦,里面大概就是{"name":"python","age":1+1+1+1+1+1+18} def args_func(a,b,*args): # args 里面保存着除了ab之外的所有多余参数 print (args) # 这回知道是元组了吧 for i in args: print (i) args_func( 1,2,3,4,5,6) # 这里调用的时候1,2分别传递给a,b,那么3456就会保存在args里面哦 def kwargs_func(a, b, **kwargs): # kwargs 里面保存着除了ab之外其他关键字传入参的参数 print (kwargs) # 这回知道是字典了吧 for k, v in kwargs: print (k, v) kwargs_func( 1, 2, c=3,

猫眼电影top100票房爬虫 Request + 正则

天大地大妈咪最大 提交于 2020-12-12 18:39:20
import json import re from multiprocessing.pool import Pool import requests from requests import RequestException def get_one_page(url): try : response =requests. get (url) if response.status_code== 200 : return response.text except RequestException: return None def parse_one_page(html): ''' 对界面进行解析 :param html: : return : ''' pattern=re.compile( ' <dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a .*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(\d+)</i> ' ,re.S)#正则表达式 items = re.findall(pattern,html) for item in items: yield { ' 序号 ' :item

Python 中的迭代器与生成器

∥☆過路亽.° 提交于 2020-12-12 18:16:44
导读 这篇文章主要介绍了 python 当中的迭代器与生成器,在涉及到大数量的场景应该考虑使用迭代器与生成器。 原文链接: https://russellgao.cn/python-iter/ 可迭代对象 如果一个对象实现了 __iter__ 方法,那么我们就称它是一个可迭代对象。如果没有实现 __iter__ 而实现了 __getitem__ 方法,并且其参数是从0开始索引的,这种对象也是可迭代的,比如说序列。 使用 iter 内置函数可以获取迭代器的对象,当解释器需要迭代对象时,会自动调用 item(x) : 如果对象实现了 __iter__ 方法,获取一个迭代器 如果没有实现 __iter__ ,但是实现了 __getitem__ ,python 会创建一个迭代器,尝试从索引0开始获取元素 如果获取失败,则抛出 TypeError 标准序列都实现了 __iter__ 方法,所以标准序列都是可迭代对象。如 list,dict,set,tuple。 只有实现了 __iter__ 方法的对象能通过子类测试 issubclass(Object,abc.Itertor) 检查对象能否迭代最标准的方法是调用 iter() 函数,因为 iter() 会考虑到实现 __getitem__ 方法的部分可迭代对象。 迭代器 迭代器主要用于从集合中取出元素,那么是什么迭代器呢? 实现了 next

wxpython笔记:Wxpython入门

蹲街弑〆低调 提交于 2020-12-12 15:58:13
Wxpython入门 api文档以及中文教程: https://pan.baidu.com/s/1TDTgHg9Mwc74ODQy68YnlQ 提取码:354n 入门示例 import wx # 1 class App(wx.App): # 2 def OnInit(self): # 3 frame=wx.Frame(parent=None,title = ' Bare ' ) frame.Show() return True if __name__ == " __main__ " : app = App(0) # 4 app.MainLoop() # 5 上面的代码的任何一行都不能少,否则将不能工作。这个基本的wxPython 程序说明了开发任一wxPython程序所必须的五个基本步骤: 1、导入必须的wxPython包 2、子类化wxPython应用程序类 3、定义一个应用程序的初始化方法 4、创建一个应用程序类的实例 5、进入这个应用程序的主事件循环    导入wxPython 你需要做的第一件事就是导入这个主要的wxPython包,这个包名为wx: import wx 一旦这个包被导入,你就可以引用wxPython的类、函数和常量(它们以wx 为前缀)。 分析 使用应用程序和框架工作 一旦你导入了wx模块,你就能够创建你的应用程序(application)对象和 框架

Spark(十一)Spark分区

≡放荡痞女 提交于 2020-12-12 15:51:58
一、分区的概念   分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务的个数,也是由RDD(准确来说是作业最后一个RDD)的分区数决定。 二、为什么要进行分区   数据分区,在分布式集群里,网络通信的代价很大,减少网络传输可以极大提升性能。mapreduce框架的性能开支主要在io和网络传输,io因为要大量读写文件,它是不可避免的,但是网络传输是可以避免的,把大文件压缩变小文件, 从而减少网络传输,但是增加了cpu的计算负载。   Spark 里面io也是不可避免的,但是网络传输spark里面进行了优化:   Spark把rdd进行分区(分片),放在集群上并行计算。同一个rdd分片100个,10个节点,平均一个节点10个分区,当进行sum型的计算的时候,先进行每个分区的sum,然后把sum值shuffle传输到主程序进行全局sum,所以进行sum型计算对网络传输非常小。但对于进行join型的计算的时候,需要把数据本身进行shuffle,网络开销很大。 spark是如何优化这个问题的呢?   Spark把key-value rdd通过key的hashcode进行分区,而且保证相同的key存储在同一个节点上,这样对改rdd进行key聚合时

python tkinter 学生信息管理系统

孤者浪人 提交于 2020-12-12 13:53:14
使用tkinter模块,python3.6,主要功能有添加,查询,删除,修改学生信息 使用模版: 1 from tkinter import * 2 import tkinter.font as tkFont 3 import tkinter as tk 4 from tkinter import ttk 最主要也是最难做的是,实现不同功能的界面在同一TK窗口内容的转换,通过把每个界面做成一个Frame框架,用for循环转换界面,来解决这个问题 1 LARGE_FONT= ( " Verdana " , 20 ) 2 3 class Application(tk.Tk): 4 def __init__ (self): 5 6 super(). __init__ () 7 8 self.wm_title( " 学生信息管理系统 " ) 9 10 container = tk.Frame(self) 11 container.pack(side= " top " , fill= " both " , expand = True) 12 container.grid_rowconfigure(0, weight=1 ) 13 container.grid_columnconfigure(0, weight=1 ) 14 15 self.frames = {} 16 # 循环功能界面 17