2017-07-28 38 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 –

相關問題