0

ディレクトリから複数の csv ファイルを読み取ることができません。

最初のファイルを実行するとコードは完全に機能しますが、2 番目のファイルでエラーが発生します。以下は、コードの関連セクションです。(ただし、質問には不要なものもあります。そのままにしておいたほうが理にかなっています):

def get_data(filename):
    '''function to read the data form the input csv file to use in the analysis'''
    with open(filename, 'r') as f:
        reader = csv.reader(f,delimiter=',')                      
        #returns all the data from the csv file in list form
        return list(reader)   

path='C:\Users\AClayton\Desktop\AW189 Data' 
for infile in glob.glob(os.path.join(path, '*.csv')):

    # infile stores the complete path of the file
    print "Current File Being Processed is:  " + infile 
    #use split to seperate the path and name of the file
    (PATH, FILENAME) = os.path.split(infile)
    print " PATH is " + PATH
    print " FILENAME is " + FILENAME
    all_data=[]
    #adds the data from the csv file to a blank list so it can be operated on
    all_data.extend(get_data(infile))
    #Create array so numerical operations may be performed
    arrdata=np.array(all_data)
    current_tracks=establish_current_tacks(arrdata,nb)
    rel_values=relative_track(current_tracks,nb)
    avg_rel_track=averaged_rel_track(navg, rel_values, nb)
    avg_rel_track_nan=avg_rel_track_nan(avg_rel_track)
    sd_rel_track_sum=sd_of_rel_track(navg, rel_values, nb)
    sd_index=sd_index(sd_rel_track_sum)

そして、これは私のエラーです:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
C:\Users\AClayton\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.0.3.1262.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
    174             else:
    175                 filename = fname
--> 176             exec compile(scripttext, filename, 'exec') in glob, loc
    177     else:
    178         def execfile(fname, *where):

C:\Users\AClayton\Desktop\currentmethod06_09_2013work-1.py in <module>()
    204     rel_values=relative_track(current_tracks,nb)
    205     avg_rel_track=averaged_rel_track(navg, rel_values, nb)
--> 206     avg_rel_track_nan=avg_rel_track_nan(avg_rel_track)
    207     sd_rel_track_sum=sd_of_rel_track(navg, rel_values, nb)
    208     sd_index=sd_index(sd_rel_track_sum)

TypeError: 'numpy.ndarray' object is not callable

この問題の原因がわかりません。関数を関数として読んでいるのではなく、先ほどの配列として読んでいるようですか?アドバイスをありがとう

4

2 に答える 2

1

これは奇妙です:

avg_rel_track_nan=avg_rel_track_nan(avg_rel_track)

あなたはおそらく次のことを意味していました:

avg_rel_track_nan=averaged_rel_track_nan(avg_rel_track)

多くのコードが他のコードに依存しているため、何が起こっているのかはわかりませんが、(おそらく) 関数呼び出しの結果をこの関数の名前に割り当てています。それはあなたが意図したことではないと思います。

于 2013-09-09T14:54:32.547 に答える
0

試す:

def get_data(filename):
    '''function to read the data form the input csv file to use in the analysis'''
    reader = [] # Just in case the file open fails
    with open(filename, 'r') as f:
        reader = csv.reader(f,delimiter=',')                      
        #returns all the data from the csv file in list form
    #f.close() # May need to close the file when done
    return list(reader)  # only return the reader when you have finished.

問題の一部は、 with 内から戻っていることだと思います(ファイルを閉じていません)

于 2013-09-09T14:57:59.033 に答える