2017-07-28 59 views
0

当我运行代码时,它将转储'Values.dat'文件,但在此之后,当我尝试将这些数据加载到变量中以便我可以继续进行进一步计算....变量c正在加载所有数据,但最后一行。数据文件不包括python中的最后一行

fs=glob.glob('*all_strain_rate_data_files/srate*.txt') 
for fil in fs: 
    sr=float(fil.split('srate')[1].split('.txt')[0]) 
    xy=loadtxt(fil) 
    y=xy[:,1] 
    avg=mean(y) 
    n_f= open('Values.dat' , 'a') 
    n_f.writelines(str(sr)+'\t'+str(avg)+'\n') 
    n_f.close 

c = loadtxt('Values.dat') 
print c 

.dat文件具有以下数据

0.001 -0.000476901658291 
0.005 -0.000459584857803 
0.01 -0.000455371401619 
0.02 -0.000454457184105 
0.03 -0.000363427058283 
0.04 -0.000425998443982 
0.05 -0.000479518449808 
0.06 -0.00044039265987 
0.07 -0.000428992925364 
0.08 -0.000479521006314 
0.09 -0.000346052124686 
0.5 -0.000419424003512 


And the print of c ........gives 
[[ 0.001  -0.0004769 ] 
[ 0.005  -0.00045958] 
[ 0.01  -0.00045537] 
[ 0.02  -0.00045446] 
[ 0.03  -0.00036343] 
[ 0.04  -0.000426 ] 
[ 0.05  -0.00047952] 
[ 0.06  -0.00044039] 
[ 0.07  -0.00042899] 
[ 0.08  -0.00047952] 
[ 0.09  -0.00034605] 

N.B:如果我在另一个python脚本如下它加载的最后一行。

c = loadtxt('Values.dat') 
print c 

因此,如果它可以在单独的脚本中工作,那么为什么它不读取同一脚本中的最后一行?

+0

您用缩进稍微过份了一下。 –

+2

C标记不适用于使用变量名称“c”的程序。 –

回答

1

您不必要地打开和关闭循环中的文件。您应该将其打开,然后在完成后关闭它:

fs=glob.glob('*all_strain_rate_data_files/srate*.txt') 
n_f= open('Values.dat' , 'a') 

for fil in fs: 
    sr=float(fil.split('srate')[1].split('.txt')[0]) 
    xy=loadtxt(fil) 
    y=xy[:,1] 
    avg=mean(y)   
    n_f.writelines(str(sr)+'\t'+str(avg)+'\n') 

n_f.close  
c = loadtxt('Values.dat') print c 
+0

感谢您的回复,但仍然存在同样的问题。无法加载最后一行数据文件Values.dat –

+0

我仍然无法弄清楚.....为什么数据文件的最后一行没有加载。 @pug –

相关问题