[计算机]abaqus Python实例-操作excel文件
- 格式:doc
- 大小:40.52 KB
- 文档页数:12
一、介绍Excel是一款广泛使用的电子表格软件,Python是一种流行的编程语言。
结合Excel和Python的使用可以提高数据处理的效率和灵活性。
本文将介绍在Excel中使用Python的方法和技巧。
二、Python插件安装1. 打开Excel并进入“文件”菜单。
2. 选择“选项”。
3. 在选项对话框中,选择“加载项”。
4. 点击“Excel加载项”下的“转到”按钮。
5. 在“添加-Ins”对话框中,点击“浏览”。
6. 找到并选择Python插件的安装文件,点击“打开”。
7. 完成安装并重启Excel。
三、使用Python进行数据处理1. 在Excel中新建一个工作表。
2. 在需要进行数据处理的单元格输入Python函数,例如“=Py.COUNTIF(A1:A10,">5")”。
3. 按下Enter键,Excel会调用Python插件执行该函数,并在单元格中显示结果。
四、Python函数示例1. 使用Python的COUNTIF函数统计大于5的数据个数。
2. 使用Python的SUM函数计算数据的总和。
3. 使用Python的AVERAGE函数计算数据的平均值。
4. 使用Python的IF函数进行条件判断。
5. 使用Python的VLOOKUP函数进行数据查找。
五、Python脚本执行1. 在Excel中打开一个工作表。
2. 点击“开发人员”选项卡。
3. 选择“插入”下的“ActiveX 控件”。
4. 在工作表中插入一个按钮控件,右键点击该按钮并选择“属性”。
5. 在“单击”事件中绑定Python脚本文件。
6. 点击按钮执行Python脚本,实现自定义的数据处理逻辑。
六、Python图表生成1. 在Excel中选择需要生成图表的数据范围。
2. 点击“插入”选项卡中的“插入统计图表”按钮。
3. 在弹出的对话框中选择“Python图表”。
4. 根据需要选择图表类型和样式,点击确定生成图表。
python in excel案例使用Python在Excel中进行数据处理是一种常见且高效的方法。
本文将列举10个Python在Excel中的应用案例,并对每个案例进行详细说明。
1. 数据清洗和转换在Excel中,经常需要对数据进行清洗和转换。
使用Python的pandas库,可以轻松地读取Excel文件,并进行数据清洗和转换。
例如,可以删除空白行、填充缺失值、删除重复数据,或者将数据转换为不同的格式。
2. 数据分析和可视化Python的pandas和matplotlib库提供了丰富的数据分析和可视化功能。
可以使用pandas读取Excel文件中的数据,然后使用matplotlib绘制各种图表,如折线图、柱状图、散点图等,以帮助我们更好地理解数据。
3. 数据合并和拆分有时候,我们需要将多个Excel文件中的数据合并成一个文件,或者将一个文件中的数据拆分成多个文件。
使用Python的pandas 库,可以很容易地实现这些操作。
可以通过读取多个Excel文件,并将它们合并为一个数据框,或者通过拆分数据框的方式将数据保存为多个Excel文件。
4. 数据筛选和排序在Excel中,可以使用筛选和排序功能来选择特定的数据或按照特定的条件对数据进行排序。
使用Python的pandas库,可以使用条件语句和排序函数对数据进行筛选和排序。
可以根据自己的需求,使用不同的条件和排序方式来处理数据。
5. 数据透视表Excel中的数据透视表功能可以帮助我们对数据进行汇总和分析。
使用Python的pandas库,可以使用pivot_table函数来实现类似的功能。
可以根据需要选择不同的行、列和值来生成透视表,并对透视表进行进一步的分析和处理。
6. 数据提取和转换有时候,我们需要从Excel文件中提取特定的数据,并将其转换为其他格式。
使用Python的xlrd和xlwt库,可以读取和写入Excel 文件,并对其中的数据进行提取和转换。
Abaqus里应用Python的一些技巧例如:cell4 = mdb.models['block'].parts['crankcase'].cells[4],要把part模块中编号为4的体赋值给cell4,就需通过路径mdb→models→part→cells(4号体属性),其中'block'、'crankcase'、分别是model和part的名字。
在草图Sketch中画线:s = mdb.models[' block '].ConstrainedSketch(name='grid',sheetSize=3.0)s.Line(point1=(-1.275, 0.0), point2=(-1.125, 0.0))s.Line(point1=(1.125, 0.0), point2=(1.275, 0.0))执行任何一条命令都必须按照结构树的格式进行操作。
我们所看到的python脚本繁杂的语句就是这样形成的。
这样大量的命令不能在短时间内掌握,我们只需要根据自己的需要边建立模型边学习就可以了。
a = mdb.models['Model-1'].rootAssemblys = a.instances['Mount-1'].edgesside1Edges = s.findAt(((0.0475, 0.0, 0.0), ))以上三行与下面的句子是等同的,即把findat找到的edges赋值给side1Edges。
分开来写简单明了,大大缩短了语句的长度。
side1Edges = mdb.models['Model-1'].rootAssembly. instances['Mount-1'].edges. findAt(((0.0475, 0.0, 0.0), ))a.Surface(side1Edges=side1Edges, name='Bottom'),这行语句设置side1Edges所对应的edge为名称'Bottom'的surface的set。
使⽤python操作excel使⽤python操作excelpython操作excel主要⽤到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
安装xlrd模块#pip install xlrd使⽤介绍常⽤单元格中的数据类型 empty(空的) string(text) number date boolean error blank(空⽩表格) empty为0,string为1,number为2,date为3,boolean为4, error为5(左边为类型,右边为类型对应的值)导⼊模块import xlrd打开Excel⽂件读取数据data = xlrd.open_workbook(filename[, logfile, file_contents, ...])#⽂件名以及路径,如果路径或者⽂件名有中⽂给前⾯加⼀个r标识原⽣字符。
#filename:需操作的⽂件名(包括⽂件路径和⽂件名称);若filename不存在,则报错FileNotFoundError;若filename存在,则返回值为xlrd.book.Book对象。
常⽤的函数 excel中最重要的⽅法就是book和sheet的操作# (1)获取book中⼀个⼯作表names = data.sheet_names()#返回book中所有⼯作表的名字table = data.sheets()[0]#获取所有sheet的对象,以列表形式显⽰。
可以通过索引顺序获取,table = data.sheet_by_index(sheet_indx))#通过索引顺序获取,若sheetx超出索引范围,则报错IndexError;若sheetx在索引范围内,则返回值为xlrd.sheet.Sheet对象table = data.sheet_by_name(sheet_name)#通过名称获取,若sheet_name不存在,则报错xlrd.biffh.XLRDError;若sheet_name存在,则返回值为xlrd.sheet.Sheet对象以上三个函数都会返回⼀个xlrd.sheet.Sheet()对象data.sheet_loaded(sheet_name or indx)# 检查某个sheet是否导⼊完毕,返回值为bool类型,若返回值为True表⽰已导⼊;若返回值为False表⽰未导⼊# (2)⾏的操作nrows = table.nrows#获取该sheet中的有效⾏数table.row(rowx)#获取sheet中第rowx+1⾏单元,返回值为列表;列表每个值内容为:单元类型:单元数据table.row_slice(rowx[, start_colx=0, end_colx=None])#以切⽚⽅式获取sheet中第rowx+1⾏从start_colx列到end_colx列的单元,返回值为列表;列表每个值内容为:单元类型:单元数据table.row_types(rowx, start_colx=0, end_colx=None)#获取sheet中第rowx+1⾏从start_colx列到end_colx列的单元类型,返回值为array.array类型。
python处理excel⽂件(xls和xlsx)⼀、xlrd和xlwt使⽤之前需要先安装,windows上如果直接在cmd中运⾏python则需要先执⾏pip3 install xlrd和pip3 install xlwt,如果使⽤pycharm则需要在项⽬的解释器中安装这两个模块,File-Settings-Project:layout-Project Interpreter,点击右侧界⾯的+号,然后搜索xlrd和xlwt,然后点击Install Package进⾏安装。
对于excel来说,整个excel⽂件称为⼯作簿,⼯作簿中的每个页称为⼯作表,⼯作表⼜由单元格组成。
对于xlrd和xlwt,⾏数和列数从0开始,单元格的⾏和列也从0开始,例如sheet.row_values(2)表⽰第三⾏的内容,sheet.cell(1,2).value表⽰第⼆⾏第三列单元格的内容。
1.xlrd模块读取excel⽂件使⽤xlrd模块之前需要先导⼊import xlrd,xlrd模块既可读取xls⽂件也可读取xlsx⽂件。
获取⼯作簿对象:book = xlrd.open_workbook('excel⽂件名称')获取所有⼯作表名称:names = book.sheet_names(),结果为列表根据索引获取⼯作表对象:sheet = book.sheet_by_index(i)根据名称获取⼯作表对象:sheet = book.sheet_by_name('⼯作表名称')获取⼯作表⾏数:rows = sheet.nrows获取⼯作表列数:cols = sheet.ncols获取⼯作表某⼀⾏的内容:row = sheet.row_values(i) ,结果为列表【sheet.row(i),列表】获取⼯作表某⼀列的内容:col = sheet.col_values(i) 结果为列表【sheet.col(i),列表】获取⼯作表某⼀单元格的内容:cell = sheet.cell_value(m,n)、 sheet.cell(m,n).value、sheet.row(m)[n].value,sheet.col(n)[m].value,结果为字符串或数值【sheet.cell(0,0),xlrd.sheet.Cell对象】⽰例:假设在py执⾏⽂件同层⽬录下有⼀fruit.xls⽂件,有三个sheet页Sheet1、Sheet2、Sheet3,其中Sheet1内容如下:import xlrdbook = xlrd.open_workbook('fruit.xls')print('sheet页名称:',book.sheet_names())sheet = book.sheet_by_index(0)rows = sheet.nrowscols = sheet.ncolsprint('该⼯作表有%d⾏,%d列.'%(rows,cols))print('第三⾏内容为:',sheet.row_values(2))print('第⼆列内容为%s,数据类型为%s.'%(sheet.col_values(1),type(sheet.col_values(1))))print('第⼆列内容为%s,数据类型为%s.'%(sheet.col(1),type(sheet.col(1))))print('第⼆⾏第⼆列的单元格内容为:',sheet.cell_value(1,1))print('第三⾏第⼆列的单元格内容为:',sheet.cell(2,1).value)print('第五⾏第三列的单元格内容为:',sheet.row(4)[2].value)print('第五⾏第三列的单元格内容为%s,数据类型为%s'%(sheet.col(2)[4].value,type(sheet.col(2)[4].value)))print('第五⾏第三列的单元格内容为%s,数据类型为%s'%(sheet.col(2)[4],type(sheet.col(2)[4])))# 执⾏结果# sheet页名称: ['Sheet1', 'Sheet2', 'Sheet3']# 该⼯作表有5⾏,3列.# 第三⾏内容为: ['梨', 3.5, 130.0]# 第⼆列内容为['单价/元', 8.0, 3.5, 4.5, 3.8],数据类型为<class 'list'>.# 第⼆列内容为[text:'单价/元', number:8.0, number:3.5, number:4.5, number:3.8],数据类型为<class 'list'>.# 第⼆⾏第⼆列的单元格内容为: 8.0# 第三⾏第⼆列的单元格内容为: 3.5# 第五⾏第三列的单元格内容为: 300.0# 第五⾏第三列的单元格内容为300.0,数据类型为<class 'float'># 第五⾏第三列的单元格内容为number:300.0,数据类型为<class 'xlrd.sheet.Cell'>xlrd读取excel⽰例可以看出通过sheet.row(i)、sheet.col(i)也可获取⾏或列的内容,并且结果也是⼀个列表,但是列表中的每⼀项类似字典的键值对,形式为数据类型:值。
python excel解析Python是一门强大的编程语言,它可以与多种文件格式交互,包括Microsoft Excel。
利用Python语言,我们可以读取、处理和创建Excel文件,以及从Excel文件中提取有用的信息。
在Python中,我们可以使用第三方库——openpyxl来操作Excel文件。
openpyxl可以读取和写入Excel文件中的数据、格式和图表,也可以创建新的Excel文件。
下面是一些openpyxl库所支持的操作:1. 读取Excel文件要读取Excel文件,我们需要使用openpyxl库中的load_workbook 函数。
load_workbook函数将Excel文件作为输入,并返回一个Workbook对象,该对象包含Excel文件中的所有工作表。
2. 读取工作表一旦我们加载了Excel文件,我们就可以通过名字或索引访问其中的工作表。
我们可以使用Worksheet对象中的cell函数读取单元格中的数据,或使用iter_rows函数读取整个工作表中的行。
3. 写入Excel文件要写入Excel文件,我们需要使用Workbook对象的create_sheet函数创建新的工作表。
我们可以使用Worksheet对象中的cell函数写入单元格中的数据,或使用append函数向工作表中添加新行。
4. 格式化Excel文件我们可以使用openpyxl库中的各种函数和属性来格式化Excel文件。
例如,我们可以设置列宽、行高、单元格字体、颜色和边框等。
5. 创建图表使用openpyxl库,我们可以创建各种类型的图表,例如线图、柱状图、饼图等。
我们可以使用Chart对象中的各种函数和属性来设置图表的大小、数据系列、颜色等。
总之,利用Python和openpyxl库可以轻松地操作Excel文件。
无论是读取数据、处理数据还是创建新的Excel文件,Python都可以成为您的得力助手。
abaqus的python手册
Abaqus是一种常用的商业有限元分析软件,它提供了Python
脚本接口,允许用户使用Python编程语言来扩展和定制Abaqus的
功能。
Abaqus的Python手册是指导用户如何使用Python脚本与Abaqus进行交互的文档。
下面我将从多个角度来回答这个问题。
首先,Abaqus的Python手册包括了如何使用Python脚本来创
建模型、定义材料属性、施加边界条件、设置分析参数、运行分析、提取结果等方面的内容。
它详细介绍了Abaqus的Python API,包
括了各种类、方法和函数的用法和参数说明。
通过阅读这个手册,
用户可以了解如何利用Python脚本来自动化重复性工作、批量处理
模型、进行参数化研究等。
其次,Abaqus的Python手册还包括了许多示例代码,这些示
例涵盖了从简单的模型创建到复杂的后处理分析的各个方面。
通过
学习这些示例代码,用户可以快速掌握如何使用Python脚本来实现
自己的需求,同时也可以了解Abaqus的Python API的灵活性和强
大性。
此外,Abaqus的Python手册还提供了大量的技术文档和帮助
文档,用户可以通过这些文档来解决在使用Python脚本与Abaqus 进行交互过程中遇到的各种技术问题和疑惑。
总的来说,Abaqus的Python手册是一本非常重要的文档,它为用户提供了丰富的信息和资源,帮助用户充分发挥Abaqus软件的功能,实现更加高效和灵活的工程分析和设计。
希望我的回答能够帮助到你,如果还有其他问题,欢迎继续提问。
Python使用pandas和openpyxl处理Excel数
据:基础案例
当然,Python有很多库可以用来处理Excel数据,其中最流行的是pandas和openpyxl。
下面是一个简单的案例,使用这两个库来读取、处理和写入Excel数据。
首先,确保你已经安装了这两个库。
如果没有,你可以使用pip来安装:pip install pandas openpyxl
以下是处理Excel数据的步骤:
1.导入库
2.读取Excel文件
3.处理数据
4.将结果写入新的Excel文件
这是一个具体的例子:
import pandas as pd
# 读取Excel文件
df = pd.read_excel('input.xlsx')
# 显示前5行数据以查看数据结构
print(df.head())
# 数据处理 - 这里我们只是简单地将所有数字加1
df = df + 1
# 将结果写入新的Excel文件
df.to_excel('output.xlsx', index=False)
在这个例子中,我们只是简单地将所有数字加1。
在实际的数据处理中,你可能会进行更复杂的操作,比如筛选特定行、过滤特定列、执行计算等。
你可以查阅pandas的文档以获取更多关于如何使用这个库的信息。
abaqus Python实例——操作excel文件目前处理数据离不开excel,所以pythoner必须学会用python操作excel表格。
Python 与excel交互方法也比较多,我一开始就接触的xlrd/xlwt包。
直到现在也没有发现什么bug 或者缺点,而且上次从ujs505那里知道Win32Com的方法在64bit系统下无效了,但是xlr d/xlwt方法依然好用,我欣喜万分。
这里给出我一个从材料单轴拉伸数据TRA文件中处理得到拉伸过程中各种应力应变量并记录到excel中的例子,其实这个例子比较乱,但是实在没有时间给弄个明了的版本了。
大家将就看看from math import *import sysimport reimport xlrdfrom xlwt import Workbookbook=Workbook()sheet=book.add_sheet('test_NT',cell_overwrite_ok=True)sheet1=book.add_sheet('engineer',cell_overwrite_ok=True)sheet2=book.add_sheet('True',cell_overwrite_ok=True)sheet3=book.add_sheet('Plastic',cell_overwrite_ok=True)sheet4=book.add_sheet('Plastic_modify',cell_overwrite_ok=True)total_nubmer=46nclown=0nclown_e=0nclown_t=0nclown_p=0nclown_pm=0for i in range(total_nubmer): myfile='tensile-'+str(i+1)f=open(myfile+'.TRA','r') engineer_strain=[]true_strain=[]engineer_stress=[]true_stress=[]plastic_strain=[]test_force=[]s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()s1=re.sub('"|\t|;|\n',' ',s1)s1=re.split(' +',s1)name=s1[2]little=name[-2:]s2=re.sub('"|\t|;|\n',' ',s2)s2=re.split(' +',s2)times=s2[2]print name+'run'+str(times)bk=xlrd.open_workbook('Static report.xls') sh=bk.sheet_by_name("Stat")diameter=sh.cell_value(i+2,4) area=pi*((diameter)**2)/4E_modulus=sh.cell_value(i+2,7) state=Trues0=f.readlines()s0=s0[-2]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)f.seek(0)s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()while state:s=f.readline()s=re.sub(';',' ',s)s=re.split(' +',s)# print s# print s0if (s=="EOF")|(s==s0):state=Falseelse:force=float(s[1])eee=float(s[0])/100.0sss=force/areatest_force.append(force)engineer_strain.append(eee)engineer_stress.append(sss)true_strain.append(log(1.0+eee))true_stress.append(sss*(1.0+eee))plastic_strain.append(log(1.0+eee)-sss*(1.0+eee)/E_modulus)f.close()##########################################################3 simu_strain=[]simu_P_strain=[]simu_triax=[]simu_force=[]simu_E=204323.0simu_little=str(int(little)+3)simu_name="New_pass"+simu_little+"test.dat"print 'refer to'+simu_namesimu_f=open(simu_name,'r')simu_state=Trues0=simu_f.readlines()s0=s0[-1]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)# print s0simu_f.seek(0)simu_s1=simu_f.readline()while simu_state:simu_s2=simu_f.readline()simu_s2=re.sub(';',' ',simu_s2)simu_s2=re.split(' +',simu_s2)if (simu_s2=="EOF")|(simu_s2==s0):simu_state=Falseelse:# print simu_s2s_force=float(simu_s2[5])s_eee=float(simu_s2[2])s_triax=float(simu_s2[3])s_sss=s_force/areasimu_force.append(s_force)simu_triax.append(s_triax)simu_strain.append(s_eee)simu_P_strain.append(log(1.0+s_eee)-s_sss*(1.0+s_eee)/simu_E)simu_f.close()##########################################################3 nrows=3sheet.write(0,nclown,'sample')sheet.write(0,nclown+2,name)sheet.write(1,nclown,"area")sheet.write(1,nclown+2,area)sheet.write(1,nclown+1,diameter)sheet.write(1,nclown+4,E_modulus)sheet.write(2,nclown,"E_strain")sheet.write(2,nclown+1,"E_stress")sheet.write(2,nclown+2,"T_strain")sheet.write(2,nclown+3,"T_stress")sheet.write(2,nclown+4,"PL_strain")for i in range(len(engineer_strain)):sheet.write(nrows,nclown,engineer_strain[i]) sheet.write(nrows,nclown+1,engineer_stress[i]) sheet.write(nrows,nclown+2,true_strain[i])sheet.write(nrows,nclown+3,true_stress[i])sheet.write(nrows,nclown+4,plastic_strain[i]) nrows+=1nclown+=5#output engineer strain and stressnrows=3sheet1.write(0,nclown_e,'file')sheet1.write(0,nclown_e+1,myfile)sheet1.write(0,nclown_e+2,"E_modulus")sheet1.write(0,nclown_e+3,E_modulus)sheet1.write(1,nclown_e,'sample')sheet1.write(1,nclown_e+1,name)sheet1.write(1,nclown_e+2,'run')sheet1.write(1,nclown_e+3,times)sheet1.write(2,nclown_e+1,"E_stress")for i in range(len(engineer_strain)):sheet1.write(nrows,nclown_e,engineer_strain[i]) sheet1.write(nrows,nclown_e+1,engineer_stress[i]) nrows+=1nclown_e+=4#output true strain and stressnrows=3sheet2.write(0,nclown_t,'file')sheet2.write(0,nclown_t+1,myfile)sheet2.write(0,nclown_t+2,"E_modulus")sheet2.write(0,nclown_t+3,E_modulus)sheet2.write(1,nclown_t,'sample')sheet2.write(1,nclown_t+1,name)sheet2.write(1,nclown_t+2,'run')sheet2.write(1,nclown_t+3,times)sheet2.write(2,nclown_t,"T_strain")sheet2.write(2,nclown_t+1,"T_stress")for i in range(len(engineer_strain)):sheet2.write(nrows,nclown_t,true_strain[i])sheet2.write(nrows,nclown_t+1,true_stress[i])nrows+=1nclown_t+=4#output plastic strain and stressnrows=3sheet3.write(0,nclown_p,'file')sheet3.write(0,nclown_p+1,myfile)sheet3.write(0,nclown_p+2,"E_modulus")sheet3.write(0,nclown_p+3,E_modulus)sheet3.write(1,nclown_p,'sample')sheet3.write(1,nclown_p+1,name)sheet3.write(1,nclown_p+2,'run')sheet3.write(1,nclown_p+3,times)sheet3.write(2,nclown_p,"PL_strain")sheet3.write(2,nclown_p+1,"T_stress")for i in range(len(engineer_strain)):sheet3.write(nrows,nclown_p,plastic_strain[i])sheet3.write(nrows,nclown_p+1,true_stress[i]) nrows+=1nclown_p+=4#output modified plastic strain and true stress nrows=3i_temp=1sheet4.write(0,nclown_pm,'file')sheet4.write(0,nclown_pm+1,myfile)sheet4.write(0,nclown_pm+2,"E_modulus")sheet4.write(0,nclown_pm+3,E_modulus)sheet4.write(1,nclown_pm,'sample')sheet4.write(1,nclown_pm+1,name)sheet4.write(1,nclown_pm+2,'run')sheet4.write(1,nclown_pm+3,times)sheet4.write(2,nclown_pm,"PL_strain")sheet4.write(2,nclown_pm+1,"Force")running=Truefor i in range(len(engineer_strain)):if running:mincr=150temp_e=(test_force[i]-test_force[i+mincr])/(plastic_strain[i]-plastic_strain[i+mincr])if temp_e>400000.0:i_temp=irunning=Falseelse:modifed_strain=engineer_strain[i]-engineer_strain[i_temp]modifed_plastic_strain=log(1.0+modifed_strain)-engineer_stress[i]*(1.0+modifed_strain)/E_mo dulussheet4.write(nrows,nclown_pm,modifed_plastic_strain)sheet4.write(nrows,nclown_pm+1,test_force[i])nrows+=1##output simulation resultnrows=3sheet4.write(2,nclown_pm+2,"PL_strain")sheet4.write(2,nclown_pm+3,"Force")sheet4.write(2,nclown_pm+4,"TRIAX")for j in range(len(simu_P_strain)):sheet4.write(nrows,nclown_pm+2,simu_P_strain[j])sheet4.write(nrows,nclown_pm+3,simu_force[j])sheet4.write(nrows,nclown_pm+4,simu_triax[j])nrows+=1#######################next file(Test result)nclown_pm+=5book.save('material_treat.xls')另一例子import csvfrom odbAccess import *from abaqusConstants import *filename=getInput('Please input the ODB file name')#下面这样都是我定义的字典或list,用来存保存提取数据的elementArea={}elementConn={}nodeArea ={}timeTP =[]#下面可以看做一般的从odb文件中提取结果的步骤#打开指定的odb文件odb=openOdb(path=filename)#得到assembly中所有的instanceinst=odb.rootAssembly.instances#或取第一个instance中的所有单元,因为我这个odb里面只有一个instance#.keys()方法可以获得一个list有所有的instance名字elments=inst[inst.keys()[0]].elements#下面一段对单元循环,得到每个单元的几个结点,然后记录下来for el in elments:label=belnodes=el.connectivityelementConn[label]=nodes#节点nodes=inst[inst.keys()[0]].nodesfor nd in nodes:label=belnodeArea[label]=0#打开指定的stepst=odb.steps[odb.steps.keys()[0]]#对指定step的某个特定场变量做循环for v in st.frames[-1].fieldOutputs['EVOL'].values: label=v.elementLabeldata =v.dataelementArea[label]=datafor k,v in elementArea.iteritems():nds=elementConn[k]for nd in nds:nodeArea[nd]+=0.25*v#下面是提取每个frame中每个节点的NT11值frames=st.framesfor fr in frames:nt11=fr.fieldOutputs['NT11'].valuestime=fr.frameValuesumTp=0sumAr=0for va in nt11:label=va.nodeLabeldata=va.dataif data<0:area=nodeArea[label]sumTp+=data*areasumAr+=areatry:mean=float(sumTp)/float(sumAr)timeTP.append( (time,mean))except:print fr.frameIdfilename=getInput('pleae input the csv file \n name to save')wr=csv.writer(file(filename ,'wb'))#这个把结果写进csv文件,只要一句,很简单,也可以在这一句之前写个表头wr.writerows(timeTP)。