2017-01-28 7 views
2

以下は、自立型の例です。 "folder_name"を変更して実行します。 この答え:タイプ '_csv.reader'のオブジェクトにはlen()がありません.csvデータは認識されません。

reader type = _csv.reader 
list(reader) = [] 
_csv.reader' has no len() 

それがファイル内にあるものの、私は、多くのことを試してみましたが、まだデータにアクセスすることはできません。どんな助けも大歓迎です。 ベルン

################ INPUTS ################ 
folder_name = '/Users/Shared/TS1/Historiques Dividendes/' 
path_to_inter_file = folder_name + 'interm.csv' 

################ End INPUTS ################ 
################ MAIN ################ 
## --- Creates "inter" file after removing previous one if existed 
if os.access(path_to_inter_file, os.W_OK) == True: 
    os.remove(path_to_inter_file) 
if os.access(path_to_inter_file, os.W_OK) == False: 
    finter = open(path_to_inter_file,'w') 

## --- Gets data from an URL 
URL = "<http://chart.finance.yahoo.com/table.csv?s=XLB&a=0&b=24&c=1980&d=0&e=24&f=2040&g=v&ignore=.csv'>" 
data = requests.get(URL) 

## --- Loads data into "inter" file 
finter.write(data.text) 
finter.close 

## --- Reopens "inter" file to read data 
finter = open(path_to_inter_file,'r') 
mreader = csv.reader(finter,delimiter=',') 
print type(mreader) 
list(mreader) 
print list(mreader) 
len(mreader) 

## --- Closes "inter" file and removes it 
finter.close() 
os.remove(path_to_inter_file) 

################ End MAIN ################ 
+0

'finter.close' =>' finter.close() ' –

答えて

2

mreaderはイテレータです。それはlenがありません。

しかし、あなただけ行うことができますので、あなたは、前のリストに行を、それを消費している:

mreader = list(mreader) 

に変換イテレータを今len

を持っている行の実際のリストへ

脇:finter.closeは何もしません。コンテキストブロックを自動的に処理するには、finter.close()またはwithコンテキストブロックを使用してください。

+0

ありがとうございます。できます。私はあなたが「消費する」という意味を理解しています。敬具Bern – Studix

関連する問題