我有一个在同一领域工作的同事写的功能。所以我知道我应该编写脚本来执行python代码,但是输出bbfile的格式看起来像是困扰我的问题。当我看到fidlines读取所有内容时,对吗?我可能关心的是bbfile(在我的情况下用tab分隔) ,它应该有三列用于freq,其他用于breal,第三列用于bimag吗?
def bbcalfunc(bbfile,nfreqlst):
fid=file(bbfile,'r')
fidlines=fid.readlines()
#define the delimiter
if bbfile.find('.txt')>=0:
delimiter='\t'
elif bbfile.find('.csv')>=0:
delimiter=','
freq=[]
breal=[]
bimag=[]
for ii in range(1,len(fidlines)):
linestr=fidlines[ii]
linestr=linestr.rstrip()
linelst=linestr.split(delimiter)
if len(linelst)>2:
freq.append(float(linelst[0]))
breal.append(float(linelst[1]))
bimag.append(float(linelst[2]))
else:
pass
freq=np.array(freq)
breal=np.array(breal)
bimag=np.array(bimag)
nfreq=np.log10(np.array(nfreqlst))
brinterp=interpolate.splrep(freq,breal)
brep=1E3*interpolate.splev(nfreq, brinterp)
biinterp=interpolate.splrep(freq,bimag)
bip=1E3*interpolate.splev(nfreq, biinterp)
return brep,bip
答案 0 :(得分:0)
输入文件的格式取决于您使用的扩展名,.txt
文件将是制表符分隔值(tsv)文件,而.csv
文件将是逗号分隔值(csv) )文件(请注意,这不是一般惯例,它是由您的同事编写该函数决定的,或者它可能是本地约定。)
文件的每一行通常由三个{tab,逗号}分隔值组成,即复数值的频率,实部和虚部。
我说通常是,因为代码会默默地丢弃所有的 元素数少于三的行。
在这里和那里可以简化代码, 但它是不必要的 相反,要回答关闭文件的问题,请更改第一部分
的功能def bbcalfunc(bbfile,nfreqlst):
#define the delimiter
if bbfile.find('.txt')>=0:
delimiter='\t'
elif bbfile.find('.csv')>=0:
delimiter=','
# slurp the file
with file(bbfile,'r') as fid:
fidlines=fid.readlines()
...