- 积分
- 0
- 注册时间
- 2009-3-13
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2011-10-20 21:02:52
|
显示全部楼层
来自 天津
近日闲来无聊,正好最近正在学OpenSees ,发现OpenSees中的地震波文件是那种一行五个数据点的,于是把前面的代码稍微改了下:
- #!/user/bin/python
- # -*-coding:utf-8 -*-
- #该函数将一般一行5个数据点的地震波文件转化成第一列时间,第二列数据点,中间逗号隔开的文件!
- def dizhenbochuli (filenamein,filenameout,dt):
- f=open(filenamein,'r')
- f1=open(filenameout,'w')
- lines=f.readlines()
- lines=[line.split() for line in lines]
- #liness=lines[4:]
- a=[]
- j=0
- delta=float(dt)
- for line in lines:
- for i in range(len(line)):
- j=j+1
- a.append(str((j-1)*delta)+','+str(line[i])+'\n')
- f1.writelines(a)
- f1.close()
- f.close()
- #该函数将上面得到的地震波文件反过来转化成一行5个数据点的地震波文件!
- def OpenSeesdizhenbo (filenamein,filenameout):
- f=open(filenamein,'r')
- f1=open(filenameout,'w')
- lines=f.readlines()
- lines=[line.split(',') for line in lines]
- a=[]
- m=len(lines)
- j=0
- for i in range(m):
- for line in lines[5*i:5*i+5]:
- a.append(str(line[1]))
- for line in lines[5*i+5:]:
- a.append(str(line[1]))
- b=[]
- for n in range(len(a)):
- if n%5!=4:
- b.append(a[n].replace('\n','')+' ')
- else:
- b.append(a[n])
- f1.writelines(b)
- f1.close()
- f.close()
- if __name__=='__main__':
- filenamein=raw_input('input filename:')
- filenameout=raw_input('output filename:')
- dt=raw_input('地震波时间间隔dt为:')
- dizhenbochuli(filenamein,filenameout,dt)
复制代码
- #通过以下调用便可:(该文件存成dizhenbochuli.py)
- from dizhenbochuli import *
- dizhenbochuli(*,*,*)#转成时间间隔-数据点形式,中间逗号隔开.
- OpenSeesdizhenbo(*,*)#转成一行5个数据点形式
复制代码
|
|