当前位置: 首页 > news >正文

做app的网站有哪些功能吗/百度广告投放

做app的网站有哪些功能吗,百度广告投放,内江做网站多少钱,关于网站建设电话销售的话术前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。…

前言

  自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。那么今天我们就把不同模块处理excel文件的方法做个总结,直接做封装,方便我们以后直接使用,增加工作效率。

openpyxl

openpyxl是个第三方库,首先我们使用命令 pip install openpyxl 直接安装

注:openpyxl操作excel时,行号和列号都是从1开始计算的

封装代码

"""
------------------------------------
@Time : 2019/5/13 18:00
@Auth : linux超
@File : ParseExcel.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
from openpyxl import load_workbook
from openpyxl.styles import Font
from openpyxl.styles.colors import BLACK
from collections import namedtupleclass ParseExcel(object):"""解析excel文件"""def __init__(self, filename, sheet_name=None):try:self.filename = filenameself.sheet_name = sheet_nameself.wb = load_workbook(self.filename)if self.sheet_name is None:self.work_sheet = self.wb.activeelse:self.work_sheet = self.wb[self.sheet_name]except FileNotFoundError as e:raise edef get_max_row_num(self):"""获取最大行号"""max_row_num = self.work_sheet.max_rowreturn max_row_numdef get_max_column_num(self):"""获取最大列号"""max_column = self.work_sheet.max_columnreturn max_columndef get_cell_value(self, coordinate=None, row=None, column=None):"""获取指定单元格的数据"""if coordinate is not None:try:return self.work_sheet[coordinate].valueexcept Exception as e:raise eelif coordinate is None and row is not None and column is not None:if isinstance(row, int) and isinstance(column, int):return self.work_sheet.cell(row=row, column=column).valueelse:raise TypeError('row and column must be type int')else:raise Exception("Insufficient Coordinate of cell!")def get_row_value(self, row):"""获取某一行的数据"""column_num = self.get_max_column_num()row_value = []if isinstance(row, int):for column in range(1, column_num + 1):values_row = self.work_sheet.cell(row, column).valuerow_value.append(values_row)return row_valueelse:raise TypeError('row must be type int')def get_column_value(self, column):"""获取某一列数据"""row_num = self.get_max_column_num()column_value = []if isinstance(column, int):for row in range(1, row_num + 1):values_column = self.work_sheet.cell(row, column).valuecolumn_value.append(values_column)return column_valueelse:raise TypeError('column must be type int')def get_all_value_1(self):"""获取指定表单的所有数据(除去表头)"""max_row_num = self.get_max_row_num()max_column = self.get_max_column_num()values = []for row in range(2, max_row_num + 1):value_list = []for column in range(1, max_column + 1):value = self.work_sheet.cell(row, column).valuevalue_list.append(value)values.append(value_list)return valuesdef get_all_value_2(self):"""获取指定表单的所有数据(除去表头)"""rows_obj = self.work_sheet.iter_rows(min_row=2, max_row=self.work_sheet.max_row,values_only=True)  # 指定values_only 会直接提取数据不需要再使用cell().valuevalues = []for row_tuple in rows_obj:value_list = []for value in row_tuple:value_list.append(value)values.append(value_list)return valuesdef get_excel_title(self):"""获取sheet表头"""title_key = tuple(self.work_sheet.iter_rows(max_row=1, values_only=True))[0]return title_keydef get_listdict_all_value(self):"""获取所有数据,返回嵌套字典的列表"""sheet_title = self.get_excel_title()all_values = self.get_all_value_2()value_list = []for value in all_values:value_list.append(dict(zip(sheet_title, value)))return value_listdef get_list_nametuple_all_value(self):"""获取所有数据,返回嵌套命名元组的列表"""sheet_title = self.get_excel_title()values = self.get_all_value_2()excel = namedtuple('excel', sheet_title)value_list = []for value in values:e = excel(*value)value_list.append(e)return value_listdef write_cell(self, row, column, value=None, bold=True, color=BLACK):"""指定单元格写入数据:param work_sheet::param row: 行号:param column: 列号:param value: 待写入数据:param bold: 加粗, 默认加粗:param color: 字体颜色,默认黑色:return:"""try:if isinstance(row, int) and isinstance(column, int):cell_obj = self.work_sheet.cell(row, column)cell_obj.font = Font(color=color, bold=bold)cell_obj.value = valueself.wb.save(self.filename)else:raise TypeError('row and column must be type int')except Exception as e:raise eif __name__ == '__main__':pe = ParseExcel('testdata.xlsx')# sheet = pe.get_sheet_object('testcase')column_row = pe.get_max_column_num()print('最大列号:', column_row)max_row = pe.get_max_row_num()print('最大行号:', max_row)#cell_value_1 = pe.get_cell_value(row=2, column=3)print('第%d行, 第%d列的数据为: %s' % (2, 3, cell_value_1))cell_value_2 = pe.get_cell_value(coordinate='A5')print('A5单元格的数据为: {}'.format(cell_value_2))value_row = pe.get_row_value(3)print('第{}行的数据为:{}'.format(3, value_row))value_column = pe.get_column_value(2)print('第{}列的数据为:{}'.format(2, value_column))#values_1 = pe.get_all_value_1()print('第一种方式获取所有数据\n', values_1)values_2 = pe.get_all_value_2()print('第二种方式获取所有数据\n', values_2)title = pe.get_excel_title()print('表头为\n{}'.format(title))dict_value = pe.get_listdict_all_value()print('所有数据组成的嵌套字典的列表:\n', dict_value)#namedtuple_value = pe.get_list_nametuple_all_value()print('所有数据组成的嵌套命名元组的列表:\n', namedtuple_value)pe.write_cell(1, 2, 'Tc_title')

# add by linux超 at 2019/05/22 15:58

上面这个封装如如果用来同时操作同一个excel文件的两个sheet写入数据时,会有点小bug(写完后你会发现两个表单有一个是没有数据的)

其实原因很简单:不同对象拥有自己独立的属性, 当你写操作的时候其实每个对象只针对自己的表单做了保存,所以最后一个对象写完数据后,只保存了自己的表单,其他的对象的表单实际是没有保存的。针对这个问题,对上面封装的代码进行了轻微改动

"""
------------------------------------
@Time : 2019/5/22 9:11
@Auth : linux超
@File : ParseExcel.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
from openpyxl import load_workbook
from openpyxl.styles import Font
from openpyxl.styles.colors import BLACK
from collections import namedtupleclass ParseExcel(object):"""解析excel文件"""def __init__(self, filename):try:self.filename = filenameself.__wb = load_workbook(self.filename)except FileNotFoundError as e:raise edef get_max_row_num(self, sheet_name):"""获取最大行号"""max_row_num = self.__wb[sheet_name].max_rowreturn max_row_numdef get_max_column_num(self, sheet_name):"""获取最大列号"""max_column = self.__wb[sheet_name].max_columnreturn max_columndef get_cell_value(self, sheet_name, coordinate=None, row=None, column=None):"""获取指定单元格的数据"""if coordinate is not None:try:return self.__wb[sheet_name][coordinate].valueexcept Exception as e:raise eelif coordinate is None and row is not None and column is not None:if isinstance(row, int) and isinstance(column, int):return self.__wb[sheet_name].cell(row=row, column=column).valueelse:raise TypeError('row and column must be type int')else:raise Exception("Insufficient Coordinate of cell!")def get_row_value(self, sheet_name, row):"""获取某一行的数据"""column_num = self.get_max_column_num(sheet_name)row_value = []if isinstance(row, int):for column in range(1, column_num + 1):values_row = self.__wb[sheet_name].cell(row, column).valuerow_value.append(values_row)return row_valueelse:raise TypeError('row must be type int')def get_column_value(self, sheet_name, column):"""获取某一列数据"""row_num = self.get_max_column_num(sheet_name)column_value = []if isinstance(column, int):for row in range(1, row_num + 1):values_column = self.__wb[sheet_name].cell(row, column).valuecolumn_value.append(values_column)return column_valueelse:raise TypeError('column must be type int')def get_all_value_1(self, sheet_name):"""获取指定表单的所有数据(除去表头)"""max_row_num = self.get_max_row_num(sheet_name)max_column = self.get_max_column_num(sheet_name)values = []for row in range(2, max_row_num + 1):value_list = []for column in range(1, max_column + 1):value = self.__wb[sheet_name].cell(row, column).valuevalue_list.append(value)values.append(value_list)return valuesdef get_all_value_2(self, sheet_name):"""获取指定表单的所有数据(除去表头)"""rows_obj = self.__wb[sheet_name].iter_rows(min_row=2, max_row=self.__wb[sheet_name].max_row, values_only=True)values = []for row_tuple in rows_obj:value_list = []for value in row_tuple:value_list.append(value)values.append(value_list)return valuesdef get_excel_title(self, sheet_name):"""获取sheet表头"""title_key = tuple(self.__wb[sheet_name].iter_rows(max_row=1, values_only=True))[0]return title_keydef get_listdict_all_value(self, sheet_name):"""获取所有数据,返回嵌套字典的列表"""sheet_title = self.get_excel_title(sheet_name)all_values = self.get_all_value_2(sheet_name)value_list = []for value in all_values:value_list.append(dict(zip(sheet_title, value)))return value_listdef get_list_nametuple_all_value(self, sheet_name):"""获取所有数据,返回嵌套命名元组的列表"""sheet_title = self.get_excel_title(sheet_name)values = self.get_all_value_2(sheet_name)excel = namedtuple('excel', sheet_title)value_list = []for value in values:e = excel(*value)value_list.append(e)return value_listdef write_cell(self, sheet_name, row, column, value=None, bold=True, color=BLACK):if isinstance(row, int) and isinstance(column, int):try:cell_obj = self.__wb[sheet_name].cell(row, column)cell_obj.font = Font(color=color, bold=bold)cell_obj.value = valueself.__wb.save(self.filename)except Exception as e:raise eelse:raise TypeError('row and column must be type int')if __name__ == '__main__':pe = ParseExcel('testdata.xlsx')print(pe.get_all_value_2('division'))print(pe.get_list_nametuple_all_value('division'))column_row = pe.get_max_column_num('division')print('最大列号:', column_row)max_row = pe.get_max_row_num('division')print('最大行号:', max_row)cell_value_1 = pe.get_cell_value('division', row=2, column=3)print('第%d行, 第%d列的数据为: %s' % (2, 3, cell_value_1))cell_value_2 = pe.get_cell_value('division', coordinate='A5')print('A5单元格的数据为: {}'.format(cell_value_2))value_row = pe.get_row_value('division', 3)print('第{}行的数据为:{}'.format(3, value_row))value_column = pe.get_column_value('division', 2)print('第{}列的数据为:{}'.format(2, value_column))values_1 = pe.get_all_value_1('division')print('第一种方式获取所有数据\n', values_1)values_2 = pe.get_all_value_2('division')print('第二种方式获取所有数据\n', values_2)title = pe.get_excel_title('division')print('表头为\n{}'.format(title))dict_value = pe.get_listdict_all_value('division')print('所有数据组成的嵌套字典的列表:\n', dict_value)namedtuple_value = pe.get_list_nametuple_all_value('division')print('所有数据组成的嵌套命名元组的列表:\n', namedtuple_value)pe.write_cell('division', 1, 2, 'Tc_title')

xlrd

安装xlrd,此模块只支持读操作, 如果要写需要使用xlwt或者使用xlutils配合xlrd, 但是使用xlwt只能对新的excel文件进行写操作,无法对原有文件进行写, 所以这里选择是用xlutils

但是还有一个问题就是,如果使用xlutils, 那么我们的excel文件需要以.xls 为后缀。因为以xlsx为后缀无法实现写,会报错(亲测,因为formatting_info参数还没有对新版本的xlsx的格式完成兼容)

注:xlrd操作excel时,行号和列号都是从0开始计算的

封装代码

"""
------------------------------------
@Time : 2019/5/13 21:22
@Auth : linux超
@File : ParseExcel_xlrd.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
import xlrd
from xlutils import copy
from collections import namedtupleclass ParseExcel(object):# xlrd 解析excel, 行号和列号都是从0开始的def __init__(self, filename, sheet):try:self.filename = filenameself.sheet = sheetself.wb = xlrd.open_workbook(self.filename, formatting_info=True)if isinstance(sheet, str):self.sheet = self.wb.sheet_by_name(sheet)elif isinstance(sheet, int):self.sheet = self.wb.sheet_by_index(sheet)else:raise TypeError('sheet must be int or str')except Exception as e:raise edef get_max_row(self):"""获取表单的最大行号"""max_row_num = self.sheet.nrowsreturn max_row_numdef get_max_column(self):"""获取表单的最大列号"""min_row_num = self.sheet.ncolsreturn min_row_numdef get_cell_value(self, row, column):"""获取某个单元格的数据"""if isinstance(row, int) and isinstance(column, int):values = self.sheet.cell(row-1, column-1).valuereturn valueselse:raise TypeError('row and column must be type int')def get_row_values(self, row):"""获取某一行的数据"""if isinstance(row, int):values = self.sheet.row_values(row-1)return valueselse:raise TypeError('row must be type int')def get_column_values(self, column):"""获取某一列的数据"""if isinstance(column, int):values = self.sheet.col_values(column-1)return valueselse:raise TypeError('column must be type int')def get_table_title(self):"""获取表头"""table_title = self.get_row_values(1)return table_titledef get_all_values_dict(self):"""获取所有的数据,不包括表头,返回一个嵌套字典的列表"""max_row = self.get_max_row()table_title = self.get_table_title()value_list = []for row in range(2, max_row):values = self.get_row_values(row)value_list.append(dict(zip(table_title, values)))return value_listdef get_all_values_nametuple(self):"""获取所有的数据,不包括表头,返回一个嵌套命名元组的列表"""table_title = self.get_table_title()max_row = self.get_max_row()excel = namedtuple('excel', table_title)value_list = []for row in range(2, max_row):values = self.get_row_values(row)e = excel(*values)value_list.append(e)return value_listdef write_value(self, sheet_index, row, column, value):"""写入某个单元格数据"""if isinstance(row, int) and isinstance(column, int):if isinstance(sheet_index, int):wb = copy.copy(self.wb)worksheet = wb.get_sheet(sheet_index)worksheet.write(row-1, column-1, value)wb.save(self.filename)else:raise TypeError('{} must be int'.format(sheet_index))else:raise TypeError('{} and {} must be int'.format(row, column))if __name__ == '__main__':pe = ParseExcel('testdata.xls', 'testcase')print('最大行号:', pe.get_max_row())print('最大列号:', pe.get_max_column())print('第2行第3列数据:', pe.get_cell_value(2, 3))print('第2行数据', pe.get_row_values(2))print('第3列数据', pe.get_column_values(3))print('表头:', pe.get_table_title())print('所有的数据返回嵌套字典的列表:', pe.get_all_values_dict())print('所有的数据返回嵌套命名元组的列表:', pe.get_all_values_nametuple())pe.write_value(0, 1, 3, 'test')

pandas

pandas是一个做数据分析的库, 总是感觉在自动化测试中使用pandas解析excel文件读取数据有点大材小用,不论怎样吧,还是把pandas解析excel文件写一下把

我这里只封装了读,写的话我这有点小问题,后面改好再追加代码吧。

请先pip install pandas安装pandas

封装代码

"""
------------------------------------
@Time : 2019/5/13 14:00
@Auth : linux超
@File : ParseExcel_pandas.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
import pandas as pdclass ParseExcel(object):def __init__(self, filename, sheet_name=None):try:self.filename = filenameself.sheet_name = sheet_nameself.df = pd.read_excel(self.filename, self.sheet_name)except Exception as e:raise edef get_row_num(self):"""获取行号组成的列表, 从0开始的"""row_num_list = self.df.index.valuesreturn row_num_listdef get_cell_value(self, row, column):"""获取某一个单元格的数据"""try:if isinstance(row, int) and isinstance(column, int):cell_value = self.df.ix[row-2, column-1] # ix的行参数是按照有效数据行,且从0开始return cell_valueelse:raise TypeError('row and column must be type int')except Exception as e:raise edef get_table_title(self):"""获取表头, 返回列表"""table_title = self.df.columns.valuesreturn table_titledef get_row_value(self, row):"""获取某一行的数据, 行号从1开始"""try:if isinstance(row, int):row_data = self.df.ix[row-2].valuesreturn row_dataelse:raise TypeError('row must be type int')except Exception as e:raise edef get_column_value(self, col_name):"""获取某一列数据"""try:if isinstance(col_name, str):col_data = self.df[col_name].valuesreturn col_dataelse:raise TypeError('col_name must be type str')except Exception as e:raise edef get_all_value(self):"""获取所有的数据,不包括表头, 返回嵌套字典的列表"""rows_num = self.get_row_num()table_title = self.get_table_title()values_list = []for i in rows_num:row_data = self.df.ix[i, table_title].to_dict()values_list.append(row_data)return values_listif __name__ == '__main__':pe = ParseExcel('testdata.xlsx', 'testcase')print(pe.get_row_num())print(pe.get_table_title())print(pe.get_all_value())print(pe.get_row_value(2))print(pe.get_cell_value(2, 3))print(pe.get_column_value('Tc_title'))

总结

使用了3种方法,4个库 xlrd,openpyxl,xlwt,pandas 操作excel文件,个人感觉还是使用openpyxl比较适合在自动化中使用,当然不同人有不同选择,用哪个区别也不是很大。

以上3种方法,都可以拿来直接使用,不需要再做封装了 !

Python接口自动化测试零基础入门到精通(2023最新版)

相关文章:

自动化测试如何解析excel文件?

前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。…...

职场好物:乐歌M9S升降办公电脑台,告别久坐办公,升职加薪就选它

办公是现代生活不可避免的组成部分,科技的快速发展,给了我们更多新的生活方式,促使我们更加关注自己的身体状况,我们挨过了饭都吃不饱的年代,随着办公人群的不断扩张,不知道你有没有发现身边人或多或少都有…...

springboot+vue基于Hadoop短视频流量数据分析与可视化系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...

审核 Microsoft SQL Server 日志

手动审核数据库活动是一项艰巨的任务,有效完成审计的最佳方法是使用简化和自动化数据库监控的综合解决方案,该解决方案还应使数据库管理员能够监控、跟踪和即时识别任何操作问题的根本原因,并实时检测对机密数据的未经授权的访问。 什么是 S…...

【NLP】什么是语义搜索以及如何实现 [Python、BERT、Elasticsearch]

语义搜索是一种先进的信息检索技术,旨在通过理解搜索查询和搜索内容的上下文和含义来提高搜索结果的准确性和相关性。与依赖于匹配特定单词或短语的传统基于关键字的搜索不同,语义搜索会考虑查询的意图、上下文和语义。 语义搜索在搜索结果的精度和相关…...

【JavaScript】JS基础语法

1 JavaScript 的书写形式 1.1 行内式 直接嵌入到 html 元素内部 <input type"button" value"按钮" onclick"alert(hello JavaScript)" >1.2 内嵌式 写在script标签内 <script>alert("haha")</script>1.3 外部式…...

06-云计算概览及问题关注

容器生态系统 容器生态系统包含核心技术、平台技术和支持技术。 1-1 容器核心技术 其中容器核心技术指的是能让容器在主机服务器上运行的技术&#xff0c;包含容器规范、容器 runtime、容器管理工具、容器生态工具、registries、容器 OS。 容器规范&#xff1a; 容器除了常…...

怎么监控钉钉聊天记录内容(监控钉钉聊天记录的3种形式)

企业沟通工具的普及&#xff0c;越来越多的企业开始使用钉钉作为内部沟通工具。然而&#xff0c;对于企业管理者来说&#xff0c;如何监控钉钉聊天记录内容成为了一个重要的问题。本文将介绍几种方法&#xff0c;帮助企业管理者实现监控钉钉聊天记录内容的目的。 一、钉钉自带功…...

深入理解强化学习——强化学习的历史:时序差分学习

分类目录&#xff1a;《深入理解强化学习》总目录 相关文章&#xff1a; 强化学习的历史&#xff1a;最优控制 强化学习的历史&#xff1a;试错学习 强化学习的历史&#xff1a;试错学习的发展 强化学习的历史&#xff1a;K臂赌博机、统计学习理论和自适应系统 强化学习的…...

OpenCloudOS9操作系统搭建Confluence8.0.4企业WIKI

OpenCloudOS9操作系统搭建Confluence8.0.4企业WIKI 1. 概要2. 系统基础环境配置3. 安装并配置MySQL3.1. 安装MySQL3.2. MySQL基本配置3.3. 创建Confluence数据库4. 安装并配置Confluence5. 破解Confluence6. 优化配置Confluence7. confluence对接Windows AD域环境1. 概要 Atlas…...

03-Vue中的常用指令的使用,事件及其修饰符

常用指令 指令语法和插值语法 Vue框架中的所有指令的名字都以v-开始,完整语法格式<HTML标签 v-指令名:参数"javascript表达式(表达式的结果是一个值)"></HTML标签>: 指令的职责是当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM元素不是所有…...

ScrapeKit库中Swift爬虫程序写一段代码

以下是一个使用ScrapeKit库的Swift爬虫程序&#xff0c;用于爬取网页视频的代码&#xff1a; import ScrapeKit// 创建一个配置对象&#xff0c;用于指定爬虫ip服务器信息 let config Configuration(proxyHost: "duoip", proxyPort: 8000)// 创建一个爬虫对象 let s…...

总感觉戴助听器耳朵又闷又堵怎么办?

随着助听器技术的进步发展&#xff0c;这些问题都有了一定程度的改善。例如&#xff0c;现在的助听器变得越来越小巧&#xff0c;外形更加美观和隐蔽&#xff1b;各种降噪技术和验配技巧也提升了助听器的音质和清晰度。 但是&#xff0c;还有一个问题困扰着很多助听器用户&…...

编程助手DevChat:让开发更轻松

#AI编程助手哪家好&#xff1f;DevChat“真”好用 # 目录 前言一、安装Vscode1、下载链接2、安装 二、注册DevChat1、打开注册页2、验证成功完成邮箱绑定3、绑定微信可获得8元 三、安装插件四、配置Access Key1、获取Access Key2、设置Access Key①、点击左下角管理&#xff08…...

稳定扩散的高分辨率图像合成

推荐稳定扩散AI自动纹理工具&#xff1a;DreamTexture.js自动纹理化开发包 1、稳定扩散介绍 通过将图像形成过程分解为去噪自动编码器的顺序应用&#xff0c;扩散模型 &#xff08;DM&#xff09; 在图像数据及其他数据上实现了最先进的合成结果。此外&#xff0c;它们的配方…...

3 Tensorflow构建模型详解

上一篇&#xff1a;2 用TensorFlow构建一个简单的神经网络-CSDN博客 本篇目标是介绍如何构建一个简单的线性回归模型&#xff0c;要点如下&#xff1a; 了解神经网络原理构建模型的一般步骤模型重要参数介绍 1、神经网络概念 接上一篇&#xff0c;用tensorflow写了一个猜测西…...

智慧农场牧场小程序源码 智慧农业认养系统源码

智慧农场牧场小程序源码 智慧农业认养系统源码 要了解源码的&#xff0c;看文末。 随着科技的进步和人们对绿色食品的需求增加&#xff0c;智慧农场正成为未来农业发展的方向。智慧农场是指运用先进的技术手段&#xff0c;如物联网、云计算、智能控制技术、大数据分析等&…...

3D数据过滤为2D数据集并渲染

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 代码逻辑&#xff1a;初始化数据集points -> 添加数据集到polydata -> 通过vtkVertexGlyphFilter过滤&#xff08;带顶点、单元数据&#xff09;po…...

第十一章 ObjectScript 系统宏(二)

文章目录 第十一章 ObjectScript 系统宏&#xff08;二&#xff09; 宏引用FormatText(text, arg1, arg2, ...)FormatTextHTML(text, arg1, arg2, ...)FormatTextJS(text, arg1, arg2, ...)GETERRORCODE(sc)GETERRORMESSAGE(sc,num)ISERR(sc)ISOK(sc)Text(text, domain, langua…...

跨境电商大作战:2023黑色星期五准备指南

黑色星期五&#xff0c;作为全球购物狂欢的象征&#xff0c;已经成为了电商业务的一年一度的重要节点。尤其对于跨境电商来说&#xff0c;这一天意味着巨大的商机和挑战。为了在这个竞争激烈的时刻脱颖而出&#xff0c;跨境电商必须做好充分的准备。Nox聚星在这里给大家分享几个…...

我的天!阿里云服务器居然比腾讯云优惠1元!

2023阿里云服务器优惠活动来了&#xff0c;以前一直是腾讯云比阿里云优惠&#xff0c;阿里云绝地反击&#xff0c;放开老用户购买资格&#xff0c;99元服务器老用户可以买&#xff0c;并且享受99元续费&#xff0c;阿腾云亲测可行&#xff0c;大家抓紧吧&#xff0c;数量不多&a…...

鸡尾酒学习——未命名(芒果口味)

1、材料&#xff1a;冰块、伏特加、芒果汁、元气森林卡曼橘味&#xff1b; 2、口感&#xff1a;芒果味道&#xff0c;酸甜为主&#xff0c;苦为辅。 3、视觉效果&#xff1a;黄色液体&#xff1b; 4、步骤&#xff1a; &#xff08;1&#xff09;向杯子中加入适量冰块&#xff…...

modbusTCP【C#】

为了编写一个完整的Modbus TCP库&#xff0c;您需要遵循以下步骤&#xff1a; 1. 安装NModbus4库&#xff1a;NModbus4是一个用于C#的Modbus库&#xff0c;它支持串口和TCP通信。您可以通过NuGet包管理器安装它。 2. 创建Modbus主机&#xff1a;使用ModbusIpMaster.CreateIp方…...

解决Linux Debian12系统中安装VirtualBox虚拟机无法使用USB设备的问题

Debian12系统中安装VirtualBox&#xff0c;再VirtualBox虚拟机中无法使用 USB设备。如下图所示&#xff1a; 解决方法如下&#xff1a; 1.安装 Virtualbox增强功能。如下图所示&#xff1a; 2.添加相关用户、用户组&#xff08; Virtualbox 装完成后会有 vboxusers 和 vboxs…...

Spring事务失效的几种情况及其解决方案

Spring事务失效的几种情况及其解决方案 方法权限修饰符不是public Transactional 使用的是 Spring AOP 实现的&#xff0c;而 Spring AOP 是通过动态代理实现的&#xff0c;而 Transactional 在生成代理时会判断&#xff0c;如果方法为非 public 修饰的方法&#xff0c;则不生…...

libgdx实现淡入淡出过渡

libgdx实现淡入淡出过渡 libgdx实现淡入淡出过渡&#xff0c;环境jdk17、libgdx 1.12.02023年11月1日11:02:50最新 依赖 <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target>&…...

linux 出现Access-Your-Private-Data.desktop README.txt

参考:https://blog.csdn.net/h66295112/article/details/81085643 参考:https://askubuntu.com/questions/71708/how-do-i-open-access-your-private-data-desktop 原因应该是通过terminal修改了ubuntu密码&#xff0c;然后重启 THIS DIRECTORY HAS BEEN UNMOUNTED TO PROTECT…...

新生儿积食:原因、科普和注意事项

引言&#xff1a; 新生儿积食&#xff0c;也被称为新生儿喂养问题&#xff0c;是新父母常常面临的挑战之一。尽管它通常是一种暂时的问题&#xff0c;但它可能会引起婴儿的不适&#xff0c;导致家长感到担忧。本文将科普新生儿积食的原因&#xff0c;提供相关信息&#xff0c;…...

看完这个,别说你还找不到免费好用的配音软件

有很多小伙伴还在找配音工具&#xff0c;今天就给大家一次性分享四款免费好用的配音工具&#xff0c;每一个都经过测试&#xff0c;并且是我们自己也在用的免费配音工具 第一款&#xff0c;悦音配音工具 拥有强悍的AI智能配音技术&#xff0c;更专业&#xff0c;完美贴近真人配…...

多种方法解决leetcode经典题目-LCR 155. 将二叉搜索树转化为排序的双向链表, 同时弄透引用变更带来的bug

1 描述 2 解法一: 使用list列表粗出中序遍历的结果&#xff0c;然后再依次处理list中的元素并且双向链接 public Node treeToDoublyList2(Node root) {if(rootnull)return root;Node dummynew Node(-10000);List<Node>ansnew ArrayList<>();dfs2(root,ans);Node p…...