2017-01-28 81 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

谢谢。有用。我明白你的意思是“消费”。最好的问候,伯尔尼 – Studix

相关问题