【办公类-22-07】周计划系列(3-2)“信息窗+主题知识(优化)” (2024年调整版本)

作品展示:

背景需求

前文对“2023年2月”的一套信息窗主题知识的文件系列,进行第一次的提取。获得基础模板。

【办公类-22-07】周计划系列(3-1)“信息窗+主题知识(提取)” (2024年调整版本)-CSDN博客文章浏览阅读795次,点赞7次,收藏16次。【办公类-22-07】周计划系列(3-1)“信息窗+主题知识(提取)” (2024年调整版本)https://blog.csdn.net/reasonsummer/article/details/136281042

可以看到,生成的“信息窗+主题知识”并非正好凑满1页,因此需要在每个word里添加一些时事内容了。控制字数多少与版面样式(在一页内的2分栏左右)。

第5步:增添文字内容,确定板式,把文字内容重新导入EXCEL,然后批量制作WROD


(1)在19份word里补全文字,控制字数

(2)最终确保 信息窗撑满半页、主题说明撑满半页

6、将以上第一次生成19份word(正确样式)做为“源文件”放入“03修改补充版”的新建文件夹。

复制“04合成新信息窗主题知识”的19份word(修订过的)到“03修改补充版”

# https://blog.csdn.net/lau_jw/article/details/114383781

from openpyxl import load_workbook
from docx import Document
import glob


# 把 ”03去掉回车版“里面修改过的word文件 复制一份到 “03修改补充版”
#  

import os
import shutil
 

path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识'
# 源文件夹路径
source_folder= path+r'\04合成新信息窗主题知识'
# 目标文件夹路径
target_folder = path+r'\03修改补充版'
 
# 遍历源文件夹中的所有文件
for file in os.listdir(source_folder):
    # 判断文件类型为 Word(后缀名为 .docx、.doc)
    if file.endswith('.docx') or file.endswith('.doc'):
        # 构建源文件的完整路径
        source_file = os.path.join(source_folder, file)
        
        # 将文件从源文件夹复制到目标文件夹
        target_file = os.path.join(target_folder, file)
        shutil.copy2(source_file, target_file)

7、把19份修改过的WORD,写入EXCEL写入(让内容逐步丰富,此时不要删除空格了。)

(1)信息窗内容(读取第3行开始到“中4班”之间的内容,包含回车)

(2)主题说明内容( 还是通过获取“主题名称”“主题说明”“主题目标”“家园共育”的段落数,进行提取。其中家园共育的最大索引是=2)

(3)因为内容、格式、空行都是调整过了,所以不需要对EXCEL的内容删除空行、空格、清除格式。

 (4)重点说明

这份原始模板里面的格式必须都改成文本,以免添加进去的文字出现内容缺失

代码展示:

# https://blog.csdn.net/lau_jw/article/details/114383781

from openpyxl import load_workbook
from docx import Document
import glob


# 把 ”03去掉回车版“里面修改过的word文件 复制一份到 “03修改补充版”
#  

import os
import shutil
 
print('-----复制修改过的文件“04合成新信息窗和主题知识”到03修改补充版,类似与再次放在“03去掉回车”-----')

path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识'
# 源文件夹路径
source_folder= path+r'\04合成新信息窗主题知识'
# 目标文件夹路径
target_folder = path+r'\03修改补充版'
 
# 遍历源文件夹中的所有文件
for file in os.listdir(source_folder):
    # 判断文件类型为 Word(后缀名为 .docx、.doc)
    if file.endswith('.docx') or file.endswith('.doc'):
        # 构建源文件的完整路径
        source_file = os.path.join(source_folder, file)
        
        # 将文件从源文件夹复制到目标文件夹
        target_file = os.path.join(target_folder, file)
        shutil.copy2(source_file, target_file)

print('---读取新的信息窗和主题说明里面的灰色字体部分,但是不要清除空格---')

path = r"D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识"
workbook = load_workbook(path + r'\10 改周次过渡模板_信息窗主题知识.xlsx')
sheet = workbook.active


number = 0
number1 = 0
d=[]

for file in glob.glob(path + r'\04合成新信息窗主题知识\*.docx'):
    print(file)
    doc = Document(file)
    
    
    # 上面是提取信息窗灰色字体内容
    content_lst = []    
    for paragraph in doc.paragraphs[3:]:
        # 改过的模板里面,第0行周次,第1行亲爱的家长, 第2行你们好,从第3行开始选取
        content = paragraph.text
               
         # 判断单元格中的文字是否有空格
        if content == '中4班':
            # 改过的模板里面,碰到“中4”就不读取了            
            break        
           
        else:  
            q = '    ' + content  # 如果段落有文字,读取整段,并在前面加4个空格(2字符)
            content_lst.append(q)
              
    print(content_lst)

    content = '\n'.join(content_lst)
    number += 1
    # 写入AB列
    sheet.cell(row=number+1, column=1).value = number
    sheet.cell(row=number+1, column=2).value = content



    # 下面是提取主题知识4块内容
    

    #获取每个文档的行数  
    print("段落数:"+str(len(doc.paragraphs)))#段落数为13,每个回车隔离一段
    d=len(doc.paragraphs)

    for i in range(len(doc.paragraphs)):  
        if '主题说明:' in doc.paragraphs[i].text:
            h1=i            # 主题说明在第几行
            print('主题说明',h1)
            
    for i in range(len(doc.paragraphs)):          
        if '主题目标:'in doc.paragraphs[i].text:
            h2=i            # 主题说明在第几行
            print('主题目标',h2)
    for i in range(len(doc.paragraphs)):  
        if '家园共育:' in doc.paragraphs[i].text:
            h3=i            # 家园共育在第几行

        # # #家园共育结束值等于总行数
    h4=d

    z1=[]    # 主题名称:
    #  查找“主题名称”所在的行
    for i in range(len(doc.paragraphs)):  
        # print("第"+str(i)+"段的内容是:"+doc.paragraphs[i].text)
        if '主题名称:' in doc.paragraphs[i].text:
            a1=doc.paragraphs[i].text                    
            z1.append(a1[5:])
            # 在同一行上,从5开始提取后面的汉字
        # print(z1)
    content1 = '\n'.join(z1)      # 组合并加回车
    
    z2=[]    # 主题说明:        
    # 提取“主题说明”
    for paragraph2 in doc.paragraphs[h1+1:h2]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t22 = paragraph2.text    
        t2= '    ' + t22        
        z2.append(t2)
    print(z2)    
    content2 = '\n'.join(z2)      # 组合并加回车

    z3=[]    # 主题目标:        
    # 提取“主题目标”
    for paragraph3 in doc.paragraphs[h2+1:h3]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t3 = paragraph3.text               
        z3.append(t3)
    print(z3)    
    content3 = '\n'.join(z3)      # 组合并加回车

    z4=[]    # 家园共育:        
    # 提取“家园共育”
    for paragraph4 in doc.paragraphs[h3+1:-2]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t4 = paragraph4.text               
        z4.append(t4)
    print(z4)    
    content4 = '\n'.join(z4)      # 组合并加回车
 
    number1 += 1
    # sheet.append([number, content1,content2,content3,content4])  # number是序号,一共遍历提取了几分Word的内容,content是主题知识中间部分的内容
    # 写入第9=13列
    sheet.cell(row=number+1, column=9).value = number1
    sheet.cell(row=number+1, column=10).value = content1
    sheet.cell(row=number+1, column=11).value = content2
    sheet.cell(row=number+1, column=12).value = content3
    sheet.cell(row=number+1, column=13).value = content4
 
workbook.save(path + r'\11 中4班下学期_信息窗主题知识.xlsx')
workbook.close()


# print('--打开XLSX-,把里面的空格删除,把1、替换成1.--')# 
# # 打开Excel文件
# workbook = load_workbook(path + r'\11 中4班下学期_信息窗主题知识.xlsx')
# # 获取第一个工作表
# worksheet = workbook.active

# # # 遍历每个单元格
# for row in worksheet.iter_rows():
    
#     for cell in row:        
#         if cell.value and isinstance(cell.value, str):            
#             # 清除单元格内文字的格式
#             cell.value = cell.value.strip()
            

# #         # 判断单元格中的文字是否有空格
# #         if ' ' in str(cell.value):
# #             # 替换空格为无空格
# #             cell.value = str(cell.value).replace(' ', '')

# #         if ' ' in str(cell.value):
# #             # 替换空格为无空格
# #             cell.value = str(cell.value).replace(' ', '')

# #         # 替换文本
# #         for s in range(1,10):
# #             if cell.value and isinstance(cell.value, str):
# #                 cell.value = cell.value.replace("{}、".format(s), "{}.".format(s))

# # 保存修改后的Excel文件
# workbook.save(path + r'\11 中4班下学期_信息窗主题知识.xlsx')

# # 关闭Excel文件
# workbook.close()

 (5)EXCEL还是使用

EXCEL看不出是否提取了所有的内容并格式正确。所以在生成一次19份WROD

8、再次生成19份WORD(板式都在A4半页)

# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
import xlwt
import xlrd
import os ,time
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time
import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT



# path=r'D:\\test\\02办公类\\90周计划4份\\06 信息窗+主题知识'+'\\'
path = r"D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识"
print(path)

file_path=path+r'\04合成新信息窗主题知识(修改补充版)'
print(file_path)

# 二、遍历excel,逐个生成word(小标签.docx是前面的模板)
try:
    os.mkdir(file_path)
except:
    pass



list = pd.read_excel(path+'\\11 中4班下学期_信息窗主题知识.xlsx')
# 信息窗
title = list["title"].str.rstrip()
name =list["name"]
content=list["content"]
classroom =list["classroom"].str.rstrip() # str.rstrip()都是文字格式
T1 =list["T1"].str.rstrip() # 没有str.rstrip()是数字格式
T2 =list["T2"].str.rstrip()# 没有str.rstrip()是数字格式
time=list["time"].str.rstrip() 

# 主题知识
titlename = list["titlename"].str.rstrip()
name1=list["name1"]
sm=list["sm"].str.rstrip()# 没有str.rstrip()是数字格式
mb=list["mb"].str.rstrip()# 没有str.rstrip()是数字格式
gy=list["gy"].str.rstrip()# 没有str.rstrip()是数字格式
classroom1 =list["classroom1"].str.rstrip() # str.rstrip()都是文字格式
# T1 =list["T1"].str.rstrip() # 没有str.rstrip()是数字格式
# T2 =list["T2"].str.rstrip()# 没有str.rstrip()是数字格式
time1=list["time1"].str.rstrip() 


# 遍历excel行,逐个生成
num = list.shape[0]
for i in range(num):
    context = {
       "title": title[i],
       "content": content[i],        
       "classroom": classroom[i],
       "name" :name[i],
       "T1": T1[i],
       "T2": T2[i],       
       "time": time[i], 

        "name1": name1[i],
        "titlename": titlename[i],
        "sm": sm[i],  
        "mb" :mb[i],
        "gy" :gy[i],      
        "classroom1": classroom1[i],       
        "time1": time1[i],          
       
    }
  
    tpl = DocxTemplate(path+'\\12 信息窗主题知识_竖版双.docx')
    # tpl = DocxTemplate(path+'\\12 信息窗主题知识_横版双.docx')
 
    tpl.render(context)
    # tpl.save(file_path+r"\\第{}周 {}班 信息窗({}).docx".format('%02d'%name[i],classroom[i],time[i]))
    tpl.save(file_path+r"\\第{}周 {}班 信息窗主题知识({}).docx".format('%02d'%name[i],classroom[i],time[i]))


……通过反复的循环操作,让本次信息窗+主题知识的板式、字数、符合标准——两篇在A4一页上,信息窗和主题说明分别在半页上,

到此,本学的信息窗+主题说明完成了!!!!

第9步:把“信息窗+主题知识”转为png格式(a4横板一页)

代码展示:

'''
作者:毛毛 
性质:转载
原网址 https://zhuanlan.zhihu.com/p/367985422

安装python,确保以下模块已经安装:win32com,fitz,re
在桌面新建文件夹,命名为:word2pdf2png
将需要转换的word(只能docx格式,可以多个)放入文件夹word2pdf2png
复制以下代码并运行。

本代码只生成png 文件夹内只有一级,子文件不生成

说明:
1、
2、把“03 新周计划生成(原版)”的内容复制到“04 新周计划(没有反思的打印)”
3、把“04 新周计划(没有反思的打印)”内容复制到“05 新周计划(没有反思的jpg上传)”
4、然后“05 新周计划(没有反思的jpg上传)”文件夹删除并生成第一张无反思的图片20份
5、空余时间。把““03 新周计划生成(原版)”文件夹的内容复制到“08 新周计划生成(手动修改-准)”文件夹,手动修改
(1)周计划第一页反思(限定在一页内)
(2)教案等
'''
#coding=utf-8
from win32com.client import Dispatch
import os
import re
import fitz
wdFormatPDF = 17 #转换的类型
zoom_x=2 #尺寸大小,越大图片越清晰 5超大,这里改成2
zoom_y=2 #尺寸大小,越大图片越清晰,长宽保持一致
rotation_angle=0#旋转的角度,0为不旋转


# print(----'把"04合成新信息窗主题知识"文件夹里的资料复制到"05jpg上传"'-----)

import os
import shutil

def copy_docx_files(source_dir, dest_dir):
    for filename in os.listdir(source_dir):
        source_path = os.path.join(source_dir, filename)
        dest_path = os.path.join(dest_dir, filename)
        
        if os.path.isfile(source_path) and filename.endswith(".docx"):
            shutil.copy(source_path, dest_path)
        
        if os.path.isdir(source_path):
            copy_docx_files(source_path, dest_dir)

# 指定源文件夹和目标文件夹
old_pat =r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\04合成新信息窗主题知识(修改补充版)'  # 要复制的文件所在目录
new_path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\05jpg上传'  #新路径


# 调用复制函数
copy_docx_files(old_pat, new_path)


#print(----生成PDF和第一页图片-----)
def doc2pdf2png(input_file):

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.(docx|doc)$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                word = Dispatch('Word.Application')
                doc = word.Documents.Open(filename)
                doc.SaveAs(filename.replace(".docx", ".pdf"), FileFormat=wdFormatPDF)
                doc.Close()
        word.Quit()

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.pdf$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                # 打开PDF文件
                pdf = fitz.open(filename)
                # 逐页读取PDF
                for pg in range(0, pdf.pageCount):
                    page = pdf[pg]
                    # 设置缩放和旋转系数
                    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
                    pm = page.getPixmap(matrix=trans, alpha=False)
                    # 开始写图像
                    pm.writePNG(filename.replace('.pdf', '') + str(pg+1) + ".png")
                pdf.close()

doc2pdf2png(new_path)

# 删除生成文件PDF  和 生成文件docx
for parent, dirnames, filenames in os.walk(new_path):
    for fn in filenames:
        if fn.lower().endswith('.pdf'):
            os.remove(os.path.join(parent, fn))
        if fn.lower().endswith('.docx'):# 删除原始文件docx 正则[pdf|docx]套不上,只能分成两条了
            os.remove(os.path.join(parent, fn))
           
# 删除png中,尾号是2-8的png(Word只要第一页,后面生成的第二页图片不要
for parent, dirnames, filenames in os.walk(new_path):
        for fn in filenames:
            for k in range(2,9):                # png文件名的尾数是2,3,4,5,6,7,8 不确定共有几页,可以把9这个数字写大一点)
                if fn.lower().endswith(f'{k}.png'):  # 删除尾号为2,3,4,5,6,7,8的png图片 f{k}='{}'.formart(k) 
                    os.remove(os.path.join(parent, fn))

图片结果展示

先出现word和PDF

在出现一张图片

第7步:把png切割成两类图片,便于上传“班级主页”

由于信息窗和主题知识在一页上,但是上传班级主页时,需要拆分开来,所以要用坐标把图片切割。

代码展示


# 参考网址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-125773141.nonecase&spm=1018.2226.3001.4187

'''

功能:切割图片
'''

import os
import os.path

from PIL import Image


cood=[[30,85,842,1100],[830,85,1684,1100]]
# 左边距,上边距,右边距,下边距


# # # print('----------第2步:新建一个临时文件夹------------')
# # # # # 新建一个”装N份word和PDF“的文件夹

name=['06信息窗上传图片','07主题知识上传图片']
ys=['信息窗','主题知识']

for i in range(len(name)):

    imagePath1=r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\{}'.format(name[i])
    if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath1)  # 若图片文件夹不存在就创建
    else:
        pass

    # 定义文件所在文件夹
    image_dir = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\05jpg上传'
    for parent, dir_name, file_names in os.walk(image_dir):  # 遍历每一张图片
        for filename in file_names:
            print(filename)
            # 第19周 中4班 信息窗主题知识(2024.6.24——2024.6.28)1.png   
            pic_name = os.path.join(parent, filename)
            image = Image.open(pic_name)
            _width, _height = image.size
            print(_width, _height)
            # 1684 1191

            a=cood[i][0]
            b=cood[i][1]
            c=cood[i][2]
            d=cood[i][3]        
                    
            # 定义裁剪范围(left, upper, right, lower)1024
            # # box = image.crop((0,0,123,123))
            box = image.crop((a,b,c,d))

            # 第19周 中4班 信息窗主题知识(2024.6.24——2024.6.28)1.png            
            box.save(imagePath1+r'\\{} {} {}.png'.format(filename[:8],ys[i],filename[17:-6]))
            # {第19周 中4班}+_+{'信息窗'}+_+{2024.6.24——2024.6.28}.png
                            
        print('Done!')   


利用坐标切割图片,并保存在指定文件夹里,控制图片名称

(1)信息窗:上传图片

(2)主题知识:上传图片

终于搞完了一套“周计划资料-信息窗主题说明”,耗费好久天,但是与去年相比,代码更周全,减少一些替换EXCEL的动作。更优化了代码。

在去年制作的基础上进一步优化

【办公类-22-01】周计划系列(1)-生成“信息窗”(提取旧docx内容,写入EXCLE模板,再次生成新docx)-CSDN博客文章浏览阅读232次。【办公类-22-01】周计划系列-信息窗的制作(提取旧docx内容,写入EXCLE模板,再次生成新docx)https://blog.csdn.net/reasonsummer/article/details/129843824【办公类-22-02】周计划系列(2)-生成“主题知识”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)_从docx-tpl怎么:导入docx模板-CSDN博客文章浏览阅读583次。【办公类-22-02】周计划系列(2)-生成“主题知识”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)_从docx-tpl怎么:导入docx模板https://blog.csdn.net/reasonsummer/article/details/129902271 

内容很多啊,我感觉还需要进一步厘清思路,继续优化设计一些可以通用的“周计划系列替换代码”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端-BOM和DOM的区别和用法

首先上图,这是整个JAVASCRIPTD 结构,因此我们可以得出一个关系等式 JavaScript ECMAscript BOM DOMECMAscript: 是一种由 ECMA国际(前身为欧洲计算机制造商协会)通过 ECMA-262 标准化的脚本程序设计语言&#xff0…

【笔记】深度学习入门:基于Python的理论与实现(五)

卷积神经网络 卷积神经网络(Convolutional Neural Network,CNN) 整体结构 CNN 中新出现了卷积层(Convolution 层)和池化层(Pooling 层),之前介绍的神经网络中,相邻层的所有神经元之间都有连接,这称为全 连接(fully-connected) …

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程,语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境,并挂起执行python脚本 conda activ…

fastAdmin表格列表的功能

更多文章,请关注:fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…

【python】Python Turtle绘制流星雨动画效果【附源码】

在这篇技术博客中,我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现,我们可以在画布上展现出流星闪耀的场景,为视觉带来一丝神秘与美感。 一、效果图: 二、准备工作 (1)、导入…

IntelliJ IDEA上svn分支管理和使用

IntelliJ IDEA上svn分支管理和使用 从Subversion下载trunk下的代码 选择项目创建分支 右键 Subversion --> branch or Tag … 选择Repository Location:需要创建的项目 选择Any Location 分支的位置和名字 详细查看截图 切换到分支 选择项目右键Subversion --> Update …

Dockerfile(1) - FROM 指令详解

FROM 指明当前的镜像基于哪个镜像构建dockerfile 必须以 FROM 开头&#xff0c;除了 ARG 命令可以在 FROM 前面 FROM [--platform<platform>] <image> [AS <name>]FROM [--platform<platform>] <image>[:<tag>] [AS <name>]FROM […

全网最新的软件测试面试八股文

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧…

如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

sql注入less46作业三

采用报错注入 updatexml(XML_document,XPath_string,new_value) 一共可以接收三个参数&#xff0c;报错位置在第二个参数。 ?sort1 and updatexml(1,concat(0x7e,database(),0x7e),1)-- #查询库名 ?sort1 and updatexml(1,concat(0x7e,(select group_concat(table_name) fr…

java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 企业培训管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

初阶数据结构:链表相关题目练习(补充)

目录 1. 单链表相关练习题1.1 移除链表元素1.2 反转链表1.3 链表的中间结点1.4 链表的倒数第k个结点1.5 合并两个有序链表1.6 链表分割1.7 链表的回文结构1.8 相交链表1.9 判断一个链表中是否有环1.10 寻找环状链表相遇点1.11 链表的深度拷贝 1. 单链表相关练习题 注&#xff1…

openai.CLIP多模态模型简介

介绍 OpenAI CLIP&#xff08;Contrastive Language–Image Pretraining&#xff09;是一种由OpenAI开发的多模态学习模型。它能够同时理解图像和文本&#xff0c;并在两者之间建立联系&#xff0c;实现了图像和文本之间的跨模态理解。 如何工作 CLIP模型的工作原理是将来自…

NFS服务器挂载失败问题

问题 mount.nfs: requested NFS version or transport protocol is not supported背景&#xff1a;现在做嵌入式开发&#xff0c;需要在板端挂载服务器&#xff0c;读取服务器文件。挂载中遇到该问题。 挂载命令长这样 mount -t nfs -o nolock (XXX.IP):/mnt/disk1/zixi01.ch…

OpenAI Triton 入门教程

文章目录 Triton 简介背景Triton 与 CUDA 的关系 Triton 开发样例样例一&#xff1a;Triton vector addition 算子Triton kernel 实现kernel 函数封装函数调用性能测试 样例二&#xff1a;融合 Softmax 算子动机Triton kernel 实现kernel 封装单元测试性能测试 样例三&#xff…

Vue3 使用动态组件 component

component 标签&#xff1a;用于动态渲染标签或组件。 语法格式&#xff1a; <component is"标签或组件名">标签内容</component> 动态渲染标签&#xff1a; <template><h3>我是父组件</h3><component is"h1">动态…

蓝桥杯-灌溉

参考了大佬的解题思路&#xff0c;先遍历一次花园&#xff0c;找到所有的水源坐标&#xff0c;把它们存入 “水源坐标清单” 数组内&#xff0c;再读取数组里的水源坐标进行扩散。 #include <iostream> using namespace std; int main() {int n,m,t,r,c,k,ans0,list_i0;…

day04_拦截器Apifox角色管理(登录校验,API接口文档,权限管理说明,角色管理,添加角色,修改角色,删除角色)

文章目录 1. 登录校验1.1 需求说明1.2 实现思路1.3 ThreadLocal1.4 AuthContextUtil1.5 拦截器使用1.5.1 拦截器开发1.5.2 拦截器注册 1.6 代码优化1.6.1 配置优化1.6.2 代码优化1.6.3 前端修改 2. API接口文档2.1 Apifox接口管理平台2.1.1 接口管理平台简介2.1.2 Apifox简介2.…

推荐几款优秀免费开源的导航网站

&#x1f9a9;van-nav 项目地址&#xff1a;van-nav项目介绍&#xff1a;一个轻量导航站&#xff0c;汇总你的所有服务。项目亮点&#xff1a;全平台支持&#xff0c;单文件部署&#xff0c;有配套浏览器插件。效果预览 &#x1f9a9;发现导航 项目地址&#xff1a;nav项目…

Mint_21.3 drawing-area和goocanvas的FB笔记(一)

一、关于freebasic和goocanvas Linux下的FreeBasic是C的一种实现&#xff0c;有指针、类、线程&#xff0c;正则表达式&#xff0c;可内嵌asm和其它语言c等&#xff0c;c的h库几乎都能改写后使用(不能直接用&#xff0c;它的.bi可从h近乎自动转换)&#xff0c;老的Quick Basic…