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

関連する問題