python-自动化办公-Excel-Openpyxl
Python处理Excel数据之Openpyxl
1.1 Openpyxl库的安装使用
openpyxl模块是一个读写Excel 2010文档的 Python 库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。新建、读取、保存工作簿。Openpyxl的安装和其它库一样。直接在PyCharm 中安装即可。
Openpyxl可以对Excel进入读、写操作,也可以进行单元格格式设置、图表、条件格式、数据透视表等设置。
由于本课程是为了巩固应用python基础知识,所以就只讲解对openpyxl对 Excel的读写操作。
1.2 Excel的新建、读取、保存
1.2.1新建保存工作簿
新建: openpyxl.Workbook(),注意这个的w是大写的(本人吃过亏),可以设置write_only=True/False的读写方式,默认是可写。
保存: workbook.save(‘工作簿名.xlsx’)
1->from openpyxl import Workbook
2-> wb=Workbook()#新建工作簿
3->wb.save('我的工作簿.xlsx')#保存工作簿
每个workbook创建后,默认会存在一个worksheet。也可以自行创建新的worksheet。
1.2.2读取保存工作簿
读取工作簿: openpyxl.load_workbook(‘工作簿名.xlsx’),注意以下相关参数的设置。read_only=False/True False表示可以读、写,True表示只能读、不能写。
guess_types=False/True False表示转换数据,True表示不能转换数据。
data_only=False/True False表示序单元格的真实信息,True表示只读取值。
1-> from openpyxl import load_workbook
2->wb=load_workbook("成绩表-1xsx')#读取工作簿3->wb.save("成绩表-2.xlsx')#保存工作簿
1.2.3实例(批量建新工作表)
1-> from openpyxl import Workbook
2-> for m in range(1,13):
3->wb = Workbook()#新建工作簿4->wb.save('9%d月.xlsx"%m)出保存工作簿
1.3工作表对象的获取方法
1.3.1工作表获取方式
获取当前活动工作表的: workbook.active
以索引值方式获取工作表: workbook.worksheets[索引值]
以工作表名获取:workbook['工作表名],注意,此表达方式没有没有成员提示。循环工作表: workbook.worksheets
获取所有工作表名: workbook.sheetnames
获取指定工作表名: worksheet.tite,可以返回工作表名称,也可以修改工作表名称,如worksheet.title=‘工作表名’
1.3.2实例(批量修改工作表名)
1-> import openpyxl
2-> wb=openpyxLload_workbook('各年业绩表.xlx')
3-> for sh in wb.worksheets:
4-> sh.title=sh.title+'-芝华公司'5-> wb.save('各年业绩表(修改后).xlsxe')
1.4工作表的新建、复制、删除
1.4.1新建工作表
可以在新建的工作簿中新建工作表(在新建工作簿时,会默认新建一个工作表)。也可在已经存在的工作簿中新建工作表。
新建工作表时的默认工作表名: workbook.create_sheet(),默认工作表名为Sheet1、Sheet2、Sheet3…-…-
新建工作表自定义工作表名: workbook.create_sheet(‘"工作表名’,指定位置),如果不指定位置则默认将新建的工作表放置在最后。
1.4.2复制工作表
workbook.copy_worksheet(工作表)
1.4.3 删除工作表
workbook.remove(工作表)
1.5关于工作表的实例应用
1.5.1实例应用(批量新建工作表)
1-> import open pyxl
2-> wb = openpyxl.Workbook()#新建工作簿
3-> for m in range(1,13):
4->wb.create_sheet("%d月"%m)#新建月份工作表
5-> wb.remove(wb['Sheet'])#别除指定工作表
6-> wb.save("2019年计划表.xlsx')#保存工作簿。
1.5.2实例应用(删除不符合条件的工作表)
1-> import openpyxl
2-> wb=openpyxLload_workbook("2018年.xlsx")#读取工作簿
3-> for sh in wb:#活环工作簿中的工作表
4-> if sh.title.split("-")[0]!='北京":#判断工作表是否不等于北京
5->wb.remove(sh)#别除工作表
6->wb.save("北京.xlsx')#保存工作簿
1.5.3实例应用(批量复制工作表)
1-> import openpyxl
2-> wb=openpyxlload_workbook(模板.xlsx')
3-> for m in range(1,13):
4->wb.copy_worksheet(wb['demo'l).title='%d月'%m
5-> wb.remove(wb['demo'])
6->wb.save('2018年各月表格.xlsxe')
1.6单元格信息获取
1.6.1单元格数据获取
A1表示法:工作表[·A1]
,R1C1表示法:工作表.cell(行号,列号)
1.6.2实例应用(汇总各表各单元格数据)
1-> import openpyxl
2->wb = openpyxl.load_workbook(各年业绩表.xlsx')
3->print(sum([s['b14'].value for s in wb]))
4-> print(sum([s.cell(14,2).value for s in wb]))
1.7单元格区域信息获取
1.7.1单元格区域数据获取
1.工作表[起始单元格∵’终止单元格’]或工作表[起始单元格:终止单元格",如l ws[‘A1’:‘F3’]或ws[‘A1: F3’]。此方法是按行读取的数据。
2.工作表["起始行号:'结束行号]或者工作表['起始行号:结束行号],如ws[‘1’:‘3’]或ws['1: 3。此方法是按行读取的数据。
3.工作表[起始列号:"结束列号]或者工作表[起始列号:结束列号],如 ws[‘A’:'F]或ws['A:F]。此方法是按列读取的数据。
4.获取(按行〉指定工作表所有已用数据: list(workbook.worksheets[索引值J.values)
1.7.2实例应用
按行求和(方法1)
1->import open pyxl
2-> wb = openpyxlload_workbook('test.xlsxe')
3-> ws=wb['成绩表"
4-> rng=ws["2:71']
5-> rng=ws['A2:'E71']
6-> print(["%s:%d分1%(rn[O].value,sum([r.value for r in rn][1:])) for rn in rng])
按行求和(方法2)
1-> import openpyxl
2->wb=openpyxl.load_workbook( 'test.xlsx')
3->ws=wb.active
4-> for x in list(ws.values)[1:]:
5->print([x[O],sum(x[1:])
按列统计平均值
1->import openpyxl
2->wb=openpyxl.load_workbook( 'test.xlsx')
3->ws=wb.active
4-> for x in list(zip(*list(ws.values)))[1:]:
5->print([x[ 0],float("%.2f"%(sum(x[1:])/len(x)-1))])
1.8行列信息获取
1.8.1行列信息获取
按行获取工作表使用区域数据:worksheet.rows
按列获取工作表使用区域数据: worksheet.columns
获取工作表中最小行号: worksheet.min_row
获取工作表中最小列号: worksheet.min_column
获取工作表中最大行号: worksheet.max_row
获取工作表中最大列号: worksheet.max_column
获取单元格的行号: cell.row
获取单元格的列号: cell.column
iter方法获取指定区域:
1.按行获取指定工作表单元格区域: worksheet.iter_rows(……)
2.按列获取指定工作表单元格区域: worksheet.iter_cols(……)
可以通过min_row、min_col、max_col、max_row这几个参数进行单元格区域的控制。
1.8.2实例应用
按行求和
1-> import openpyxl
2-> wb=openpyxl.load_workbook('test.xlsx')
3->ws=wb.active
4-> for r in [row for row in ws.rows][1:]:
5-> l=[w.value for v inr]
6->print([I[O],sum(I[1:])])
按列求最大值
1->import openpyxl
2->wb=openpyxlload_workbook('test.xlsx')
3->ws=wb.active
4-> for cin [col for col in ws.columns][1:]:
5-> l=[w.value for v in c]
6->print([I[o],max(I[1:]))
按行求和
1-> import openpyxl
2->wb=openpyxLload_workbook('test.xlsx')
3->ws=wb.active
4->subtotal=[sum([w.value for v in row]) for row in
ws.iter_rows(min_row=2,min_col=2)]
5->name=[v.value for v in ws['a']][1:]
6->print(list(zip(name,subtotal))
按列求最大值
1->import openpyxl
2->wb=openpyxl.load_workbook('test.xlsx')
3->ws=wb.active
4->subtotal=[max([v.value for v in col]) for col in ws.iter_cols(min _row=2,min_col=2)]
5->name=[wvalue for v in ws['1']][1:]
6->print(list(zip(name,subtotal)))
动态获取单元格区域并汇总
1->import openpyxl
2-> wb=openpyxL.load_workbook( 'demo.xlsx')
3->ws=wb.active
4->minr=ws.min_row
5-> minc=ws.min_column
6->maxr=ws.max_row
7->maxc=ws.max_column
8->rngs=ws.iter_rows(min_row=minr+1,min_col=minc+2,max_row=maxr-1,max_col=
maxc-1)
9->subtotal=[min([v.value for v in row]) for row in rngs]
10-> co=[v for v in
ws.iter_cols(min_row=minr+1,min_col=minc+1,max_row=maxr-1,max_col=minc+1)
11-> chanping=[[w.value for v in r] for rin col][o]
12-> print(list(zip(chanping,subtotal)))
1.9单元格的写入
1.9.1单元格与区域数据写入
A1表示法:工作表['A1]=值
,R1c1表示法:工作表.cell(行号,列号,值)
1.9.2实例应用(九九乘法表)
4->import open pyxl
5-> wb=openpyxLload_workbook('demo.xIsx')
6-> ws=wb.active
7-> for x in range(1,10):
8->for y in range(1,x+1):
9->ws.cell(x,y,1%dX%d=%d '9%(y,x,×*y)#方法1
10->ws.cell(x,y).value='%dX%d=%d'%(yxx*y)#方法2
11->wb.save('demo.xlsx')
1.10批量写入数据
1.10.1按行写入数据
在最后一行写入数据:工作表.append(列表)
1.10.2实例应用(九九乘法表)
1-> import openpyxl
2-> wb=openpyxL.load_workbook( 'demo.xlsx")
3->ws=wb.active
4->—[["'%d×%d=%d"%(y,x,x*y) for y in range(1,10) if y<=x] for x in range(1,10)]
5-> for r in l:
6->ws.ap pend(r)
7->wb.save('demo.xlsx')
1.11循环方式批量写入数据
1.11.1循环获取单元格对象,再写入
之前我们可以通过组合单元格来获取或者写入数据,但还有一种方法,就是直接循环单元格区域来写入数据。与循环读取的表示方式基本相同,只是多了一个赋值。
1.11.2实例应用(大于等于90分为优秀)
1-> import openpyxl
2-> wb=openpyxL.load_workbook( 'demo.xlsx")
3-> ws=wb.active
4->rngs=ws.iter_rows(min_row=2,min_col=2)
5-> for row in rngs:
6->for c in row:
7->if c.value>=90:
8->cvalue='%d(%s)%(c.value,'优秀)
9-> wb.save( 'demo1.xlsx')
1.11.3实例应用(每个人的总分大于等于300为优秀)
1. import openpyxl
2.wb=openpyxLl.load_workbook('demo.xlsx')
3. ws=wb.active
4.rngs=ws.iter_rows(min_row=2,min_col=2)
5.for row in rngs:
6.sm=sum( [c.value for cin row][0:4])
7.if sm>=300:
8.row[-1].value='优秀'
9. wb.save('demo2.xlsx')
1.12工作表行、列的插入与删除
1.12.1行列的插入与删除
插入列: worksheet.insert_cols(位置,列数),其中位置是指在工作表的第几列前插入多少列。
插入行: worksheet.insert_rows(位置,行数),其中位置是指在工作表的第几行前插入多少行。
删除列: worksheet.delete_cols(位置,列数),从指定位置开始向后删除指定的列数。
删除行: worksheet.delete_rows(位置,行数),从指定位置开始向下删除指定的行数。
1.12.2实例应用(筛选小于300的记录)
12-> import openpyxl
13-> wb=openpyxLload_workbook("成绩表.xlsx")
14-> ws=wb.active
15-> for r in range(ws.max_row,1,-1):
16->s=sum([vvalue for v in ws[r][1:]])
17->if s>=300:
18->ws.delete_rows(r)
19-> wb.save('demo999.xlsx")
1.13实例应用(求和结果写入单元格)
1->import openpyxl
2-> wb=openpyxl.load_workbook('test.xlsx')
3->ws=wb['成绩表']
4->rng=ws[str(ws.min_row +1):str(ws.max_row)]#动态获取单元格区域
5->rngs=[[rn[0].value,sum([r.value for r in rn][1:])] for rn in rng]#汇总处理
6->ws1=wb.create_sheet("结果")#新建工作表
7->ws1.append([姓名,总分数]#写入表头
8->for line in rngs:
9->ws1.append(lin e)#活环写入求和分数
10-> wb.save('test1.xlsx")#保存工作簿
1.14实例应用(筛选成绩总分大于等于300分的记录)
1->import openpyxl
2->wb=openpyxlload_workbook('test.xlsxe')
3->ws=wb[成绩表];nws=wb.create_sheet("结果)
4->rng=list(ws.rows)[1:];nws.append([wvalue for v in ws[1':1']]+[总分'])
5-> for l in rng:
6-> l=[w.value for v in l]
7->if sum(Il[1:])>=300:
8->nws.append(ll+[sum(lI[1:]])
9-> wb.save('test2.xlsxe')
1.15实例应用(工资条制作)
1->import openpyxl
2-> wb=openpyxLload_workbook('工资表.xlsx",data_only=True)
3->ws=wb.active
4-> for r in range(ws.max_row,2,-1):
5->ws.insert_rows(r)
6->for c in range(1,8):
7->ws.cellr,c,ws.celI(1,c).value)
8-> wb.save('工资表结果.xkx')
1.16 实例应用(多工作表合并到单工作表)
1-> import openpyxl
2-> wb=openpyxl.load_workbook('各年业绩表.xlsx')#读取工作簿
3-> nwb=openpyxLWorkbook()#新建工作簿
4->nws=nwb.active#获取活动工作表
5->nws.append(['年份∵月份∵金额])#写入标题
6-> for sh in wb:
7->ll=[[sh.title] +[wvalue for v inl] for l in sh.rows][1:-1]#合并各表数据
8->for l in ll:
9->nws.append(ID)#3入到新表
10-> nwb.save('合并.xlsx')#保存工作表
1.17实例应用(单工作表拆分到多工作表)
1->import openpyxl
2-> wb=openpyxLload_workbook('各班成绩表.xkx')#读取工作簿
3->ws=wb.active#读取活动工作表
4->rngs=ws.iter_rows(min_row=2)#获取工作表中的数据
5->d=#创建空字典
6-> for r in rngs:
7-> l=[wvalue for v inr]
8->if I[0] in d.keys():#!将每行数据写入到字典中对应的班级
9.>d[1[0]]+=[]
10->else:
11->d[[0]]=[叮]
12-> nwb=openpyxL. Workbook()#新建工作簿
13-> for k,v in sorted(d.items()):
14->nws=nwb.create_sheet(k)#将字典中的键名做为班级名
15-> nws.append(['班级∵姓名∵'分数]#写入每个工作表的标题
16->forr in v:
17->nws.append(r)#将每个班的记录写入对应的工作表
18-> nwb.remove(nwb['Sheet'])#别除默认创建的工作表
19-> nwb.save("拆分到工作表.xlsxe')#保存工作簿
1.18实例应用(单工作簿拆分到多工作簿中(单表中))
1->import openpyxl
2-> wb=openpyxL.load_workbook('工资表.xlsx",data_only=True)3->rngs=wb.active.iter_rows(min_row=2)
4-> d=[]
5-> for row in rngs:
6->l=[w.value for v in row]
7->if I[2] in d.keys():
8->d[[2]]+=[l]
9->else:
10->d.update(l[2]:[0]
11-> for k,v in d.items():
12->nwb=open pyxl.Workbook()
13-> nws=nwb.active;nws.title=k
14->nws.append(['工号∵姓名,'应发工资"∵扣款∵奖金"∵;实发工资D)
15->for r in v:
16->del r[2]
17->nws.append(r)
18->nwb.save('各部门工资表W'+k+'.xlsx')
1.19实例应用(单工作簿拆分到多工作簿中(多表中))
1->import openpyxl
2->wb=openpyxl.load_workbook('工资表.xlsx",;data_only=True)
3->ws=wb.active
4->rngs=ws.iter_rows(min_row=2)
5->d=[]
6->for row in rngs:
7->l=[Lvalue for l in row]
8->if [2] in d.keys() and l[3] in d[II[2]].keys(:
9->d[I[2][[3]+=[
10->else:
11->if not lI[2] in d.keys():d[II[2]]=得
12->d[I[2]][[3]=[I
13-> for k,v in d.items():
14->nwb=open pyxl.Workbook()
15->for m,n in witems():
16->nws=nwb.create_sheet(m);nws.append([wvalue for v in ws['1'l1)
17->for f in n:
18->nws.append(f)
19->nwb.remove(nwb['Sheet'])
20->nwb.save('拆分结果W'+k+".xlsx')
1.20实例应用(二维表转一维表)
1->import openpyxl
2->wb=openpyxl.load_workbook("业绩表.xlsx")
3->ws=wb.active
4->if 转换表' in wb.sheetnames:
5->wb.remove(wb[转换表])
6->nws=wb.create_sheet('转换表')
7->nws.append([姓名∵;月份∵金额])
8-> for name,row in zip(ws['a'][1:],ws.iter_rows(min_col=2,min_row=2)):
9->for x,y in zip(ws[11'][1:],row):
10->nws.append([name.value,x.value,y.value])11-> wb.save("业绩表.xlsxe')
1.21实例应用(一维转二维)
1-> import openpyxl
2->wb=openpyxL.load_workbook("业绩表.xlsx")
3->ws=wb.active
4-> if not'二维表' in wb.sheetnames:
5->nws=wb.create_sheet('二维表')
6->rngs=[[r.value for r in row] for row in ws.iter_rows(min_row=2)]
7->mm=list({name.value:" for name in ws['b'][1:]}.keys0)
8->nws.ap pend(["姓名']+mm)
9->forx in {name.value:" for name in ws['a'][1:]}.keys():
10->=[(x,y) for yin mm]
11->nws.append([x]+[list(filter(lambda x:x[0]==s[0] and x[1]==s[1],rngs)[O][2]
for s in l])
12-> wb.save("业绩表.xlsx")
1.22实例应用(将入库单据数据写入工作表)
1-> import openpyxl
2-> wb=openpyxL.load_workbook('入库单.xlsx',data_only=True)
3->wb1=openpyxLload_workbook("数据库.xlsx')
4->ws=wb.active
5-> Hlist(ws.values)
6-> t=(I[2][1],I[2][3].I[2][5])
7->if not t[2] in [v.value for v in wb1.active[i]]:
8->for v in [5:]:
9->if not None in v:
10->wb1.worksheets[o].append(v+t)
11->wb1.save("数据库xlsx'")
12->print(保存成功!)
13-> else:
14->print('己保存)
相关文章:
python-自动化办公-Excel-Openpyxl
Python处理Excel数据之Openpyxl 1.1 Openpyxl库的安装使用 openpyxl模块是一个读写Excel 2010文档的 Python 库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其…...
图形编辑器基于Paper.js教程10:导入导出svg,导入导出json数据
深入了解Paper.js:实现SVG和JSON的导入导出功能 Paper.js是一款强大的矢量绘图JavaScript库,非常适合用于复杂的图形处理和交互式网页应用。本文将详细介绍如何在Paper.js项目中实现SVG和JSON格式的导入导出功能,这对于开发动态图形编辑器等…...
[STM32][Bootloader][教程]STM32 HAL库 Bootloader开发和测试教程
0. 项目移植 对于不想知道其执行过程的朋友来说,可以直接移植,我的板子是STM32F411CER6, 512K M4内核 项目地址: Bootloader(可以自己写标志位用于自测,项目中这部分代码已经被注释,可以打开自行测试&…...
如何手写一个SpringBoot框架
你好,我是柳岸花开。 在这篇文章中,我们将手写模拟SpringBoot的核心流程,让大家能够以一种简单的方式了解SpringBoot的大概工作原理。 项目结构 我们创建一个工程,包含两个模块: springboot模块,表示Spring…...
vite解决前端跨域步骤
Vite 解决跨域问题的原理主要是通过其内置的开发服务器功能实现的,具体来说,是通过 HTTP 代理(HTTP Proxy)机制。在开发环境中,Vite 服务器可以配置为一个代理服务器,将前端应用发出的请求转发到实际的后端…...
同步交互与异步交互:深入解析与选择
同步交互与异步交互:深入解析与选择 1、同步交互2、异步交互3、选择策略 💖The Begin💖点点关注,收藏不迷路💖 在软件开发的世界里,交互方式主要分为两大类:同步与异步。下面是对这两种方式的解…...
Day1
首先,大概学习了一下用anaconda去创建一个环境(因为Django是有python版本的要求),然后学着去切换环境。 创建环境:conda create -n django_study python3.10 激活环境:conda activate django_study 删除环…...
Introduction to Data Analysis with PySpark
1.DataFrame and RDDs 2.Spark Architecture 3. Data Formats and Data Sources 倘若您觉得我写的好,那么请您动动你的小手粉一下我,你的小小鼓励会带来更大的动力。Thanks....
基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 无刷直流电机(BLDCM)原理 4.2 六步换相逆变器 4.3 双PI控制器设计 5.完整工程文件 1.课题概述 基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真。双PI控制…...
双向链表的基本操作
#include<iostream> #include<cmath> #include<cstring> using namespace std; typedef long long ll; typedef struct line {int data;struct line *pre;//前指针struct line *next;//后指针 }line,*a; line* init_line(line*head) {cout<<"请输…...
modbus tcp和modbusRTU的区别是什么?
Modbus是一种应用广泛的通信协议,主要用于工业自动化和过程控制系统。Modbus有多种变体,其中Modbus TCP和Modbus RTU是最常见的两种。以下是它们之间的主要区别: 1. 基本定义 Modbus RTU (Remote Terminal Unit): 是基于串行通信的协议&am…...
web小游戏开发:拼图(四)对调和移动拼图玩法的实现
web小游戏开发:拼图(四)对调和移动拼图玩法的实现 对调方式对调模式实现移动方式移动的实现小结对调方式 在完成了原始拼图玩法后,剩下两个玩法其实相对就变得简单的多了。 对调模式,简单来说,就是选中两个图块,然后位置对调一下。 那么,我们来整理一下,看看需要哪…...
前端:Vue学习 - 智慧商城项目
前端:Vue学习 - 智慧商城项目 1. vue组件库 > vant-ui2. postcss插件 > vw 适配3. 路由配置4. 登录页面静态布局4.1 封装axios实例访问验证码接口4.2 vant 组件 > 轻提示4.3 短信验证倒计时4.4 登录功能4.5 响应拦截器 > 统一处理错误4.6 登录权证信息存…...
KVM调整虚拟机与CPU铆钉(绑定)关系
虚拟机铆钉CPU 把虚拟机的vCPU绑定在物理CPU上,即VCPU只在绑定的物理CPU上调度,在特定场景下达到提升虚拟机性能的目的。比如在NUMAQ系统中,把vCPU绑定在同一个NUMA节点上,可以避免CPU跨节点访问内存,避免影响虚拟机运…...
华火电焰灶:烹饪新宠,温暖与美味的完美融合
在众多厨房电器中,华火电焰灶以其独特的魅力和卓越的性能脱颖而出,成为了众多家庭的烹饪新宠。今天,就让我们一同走进华火电焰灶的精彩世界,探索它的非凡之处。 华火电焰灶,首先吸引人的便是其创新的等离子电生明火技术…...
理想发周榜,不是新能源市场的原罪
余华在他的小说《在细雨中呼喊》曾写过这么一段话: “仓廪实而知礼节,衣食足而知荣辱”,在物质需求得到满足以前,精神文明的发展难免会有所滞后。所以,贫穷,不是原罪。 同样的,在如今的新能源…...
AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动
目录 基本介绍 详细特点 图解安装 下载失败?缓慢? 创建并运行脚本代码😃 新建空 xxx.ahk文件 vscode/记事本等编辑工具打开 复制并粘贴简易脚本 运行 其他问题 问题一:弹出无法执行此脚本 关闭脚本 基本介绍 AutoHot…...
如何在C语言中实现求解超级丑数
超级丑数是一个正整数,并且它的质因数只包含在给定的质数列表中。超级丑数的定义类似于丑数,但可以根据特定需求改变质因数的范围。下面是如何在C语言中实现求解超级丑数的代码。 我们使用最小堆(优先队列)来高效地生成超级丑数序…...
secExample靶场之java反序列化漏洞复现
我是使用kali虚拟机搭建的靶场,具体搭建步骤可以看我之前的博客内容。 访问靶机地址,打开java反序列化的 点进去后是如图的页面,随便输入一信息。 可以看到敏感信息直接显示在了页面上。 访问192.168.189.141:8080/cors1,可以看到…...
解决升级Linux内核后,open files设置无效的问题。
问题过程 操作系统是OpenEuler 20.03,内核由4.19.90-2112.8.0.0131.oe1.aarch64升级到kernel-4.19.90-2401.1.0.0233.oe1.aarch64后,重启系统后,重新开起来运行OceanBase就运行不起来了,提示open files must not be less than 20…...
关于防范勒索病毒Play新变种的风险提示
近日,工业信息化部网络安全威胁和漏洞信息共享平台监测发现针对 Linux的勒索病毒Play新变种,攻击对象主要为VMware ESXi 虚拟化环境,攻击目标包括制造、建筑业、IT、金融和房地产等行业。 Play勒索病毒又名 Balloonfly和PlayCrypt࿰…...
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、跨平台的DASH/HLS/MSS下载工具,并且支持点播和直播(DASH/HLS)的内容下载:N_m3u8DL-RE。 网络流媒体传输协议介绍 DASH DASH是一种基于HTTP的…...
MATLAB学习日志DAY21
结构体(2) 如果将生成逗号分隔列表的表达式括在方括号中,MATLAB 会将该列表中的每一项都存储在数组中。示例中,MATLAB 创建一个数值行向量,该向量包含结构体数组 S 的每个元素的 score 字段: scores [S.…...
Spingboot请求tcp 方式
import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel;/*** 请求tcp接口** author Mr丶s* date 2024/7/1…...
leetcode刷题日记-括号生成
题目描述 题目解析 回溯的题目,不过这个两个if我就感觉有点难以理解了,不过仔细的思考了一下,确实考虑到了每个位置的情况,特别是针对右边括号 题目代码 class Solution:def generateParenthesis(self, n: int) -> List[str…...
小程序按钮分享
使用button设置: open-type"share":来微信分享; html: <button open-type"share"></button>...
多模态多智能体,在实现系统2(深思熟虑)方面的探索
多模态和多智能体,在系统2(深思熟虑)方面的探索 提出背景理性的定义为什么理性定义是四大基本原则,而不是其他数量,又为何是这四个,而不是其他?理性 不等于 推理 通过多模态多智能体系统增强理性…...
【CAN通讯系列8】如何准确接收数据?
在 【CAN通讯系列7】波特率是什么?已经介绍了CAN位时间和采样点等概念,每1位由同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)四个段组成,这个也成为位时序,采样点位置处于PBS1和PBS2的交界处,如…...
RabbitMQ知识总结(基本概念)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 基本概念 Producer: 消息的生产者,是一个向…...
Prel语言入门学习:一篇全面的指南
引言 在编程语言的海洋中,Prel是一个较少人知的新星。作为一种专为数据处理和分析设计的语言,Prel结合了现代编程语言的简洁性与功能性,提供了一种独特的解决方案,尤其适用于数据科学家和分析师。本文将详细介绍Prel语言的基础&am…...
海宁公司做网站/百度搜索网站排名
【一】 在新乐谱的第一小节开始添加一个全音符的中央C No.1 在New里新建一个插件 5/建中央C (User copy) No.2 双击打开 点run运行里输入代码 如图: No.3 点击ok 然后close关闭 No.4 点菜单栏的Plug-ins里 我新建的5插件 No.6 运行后就是这…...
公司网站做优化/新浪舆情通官网
action是什么?action是获得form表单数据 再去处理的类为什么要有action?因为在servlet中往往会出现使用一个servlet处理多个功能,比如登陆功能,注册功能,浏览功能等,这样action就是必不可少的了怎么去使用a…...
英文网站做百度权重有意义吗/百度关键词seo优化
第一部分 调研评测 Windows版BUG 1.OCR强力取词功能:对于图片中的印刷体文字识别率较高,但对于手写文字识别率低,特别是识别生活中的图片,比较明显,经常识别出乱码。且该功能开启后,CPU的负担有明显加重。…...
wordpress个人模板下载/2021年最为成功的营销案例
我叫张志印,来自 Grab,这次主要跟大家分享一下我们在地理服务中的 Golang 实践。本次分享大纲:Whats Grab一个典型的派单流程一个核心地理服务系统演进历程Why go压测与调优QAGrab 是东南亚最大的出行平台,我们不只是…...
网站建设中 很快回来/双11各大电商平台销售数据
工作中常会用到数据分析,可能是月数据分析,也可能是年,因为从事的岗位是运营,所以运营少不了都会汇总数据,然后通过数据分析,得出结论,再根据结论思考运营的新方向。所以几乎每日,每…...
做网站编码/seo推广技术
1, Java的基本部分 1.1 java中int数据占几个字节 1.2 有了基本类型, 为什么还需要包装类型? 1.3 说一下""和equals方法的区别? 1.4 讲一下String和StringBuilder的区别(final)?StringBuffer和StringBuilder的区别? 1.5, 讲一下java中的集合? 1.6 Ar…...