以前用fortran写小程序进行后处理的脚本处理(abaqus),近期尝试用python写了个读取文件/判断最值/写出文件的一个脚本
也许对一些朋友有借鉴作用
import re
Data = []
f = open('data.txt')
line = f.readline()
Num_time=0
Num_nd=0
Num_line=1
Num=0
time=[]
column=1
while line:
searchObj= re.search( r'n o d a l f o r c e g r o u p o u t p u t t=', line)
searchObj2= re.search( r'nd#', line)
if searchObj:
Data.append([])
Num_time+=1
Num_nd=0
s=line
parts= (re.split( '\s*=\s*' ,s ))
TT=float(parts[1])
time.append(TT)
Data[Num_time-1].append([])
Data[Num_time-1].append([])
Data[Num_time-1].append([])
if searchObj2:
Num_nd+=1
# print (Num_nd)
s=line
parts= (re.split( '\s*' ,s ))
Num_node=int(parts[2])
X_force=float(parts[4])
Y_force=float(parts[6])
Data[Num_time-1][0].append(Num_node)
Data[Num_time-1][1].append(X_force)
Data[Num_time-1][2].append(Y_force)
line = f.readline()
Num_line+=1
f.close()
#print(Data[0][1])
#print(Data[1][1])
X_force_max=[]
X_force_min=[]
Y_force_max=[]
Y_force_min=[]
for i in range(0,Num_time):
X_force_max.append(max(Data[i][1]))
X_force_min.append(min(Data[i][1]))
Y_force_max.append(max(Data[i][2]))
Y_force_min.append(min(Data[i][2]))
Output=[]
Output.append('%-12s%-12s%-12s%-12s%-12s \n'%('Time','X_force_max','X_force_min','Y_force_max','Y_force_min' ))
for i in range(0,Num_time):
Output.append('%-12.3e%-12.3e%-12.3e%-12.3e%-12.3e \n'%(time[i],X_force_max[i],X_force_min[i],Y_force_max[i],Y_force_min[i]))
f=open('f.txt','w')
f.truncate()
f.writelines(Output);
f.close()
素材文件
脚本文件
我是现学现用,有几个网站很有用,记录在这里
http://blog.jobbole.com/74844/
各种字符含义
http://www.yiibai.com/python/python_reg_expressions.html
正则表达式最权威教程
http://blog.csdn.net/carolzhang8406/article/details/6335072