2017-10-08 75 views
0

我想下載Nifty 50公司的數據並將它們存儲爲CSV在我的硬盤上。我正在使用下面提到的代碼。它成功地下載的數據爲32家公司,但之後,它已經開始給錯誤=「python3(820,0x70000950d000)的malloc:*錯誤對象0x7f9eba7103b0:指針被釋放沒有被分配 *設置malloc_error_break斷點調試 中止陷阱:6「。我在MacBook上並使用終端。中止陷阱:6在Python3下載CSV文件中的數據

import csv 
import urllib.request as urllib 
import datetime as dt 
import os 
import pandas as pd 
import pandas_datareader.data as web 
import nsepy as nse 

def saveNiftySymbols(): 
    url = "https://www.nseindia.com/content/indices/ind_nifty50list.csv" 
# pretend to be a chrome 47 browser on a windows 10 machine 
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"} 
    req = urllib.Request(url, headers = headers) 
# open the url 
    x = urllib.urlopen(req) 
    sourceCode = x.read().decode('utf-8') 

    cr = csv.DictReader(sourceCode.splitlines()) 
    l = [row['Symbol'] for row in cr] 
    return l 

def fetchDataFromNse(l): 
    if not os.path.exists('stock_dfs'): 
     os.makedirs('stock_dfs') 

    start = dt.datetime(2000, 1, 1) 
    end = dt.datetime.today() 

    for symbol in l: 
     if not os.path.exists('stock_dfs/{}.csv'.format(symbol)): 
      df=nse.get_history(symbol,start, end) 
      df.to_csv('stock_dfs/{}.csv'.format(symbol)) 
     else: 
      print('Already have {}'.format(symbol)) 

fetchDataFromNse(saveNiftySymbols()) 

回答

1

這似乎是與python安裝在Mac上的錯誤,檢查這個職位,這是一個有點老,但問題是相同的 https://github.com/ludwigschwardt/python-gnureadline/issues/50

+0

我安裝的IPython和gnureadline並再次運行該程序。它給出了同樣的錯誤,然後我做了一些不同的事情,我將import行從第4行移動到第1行,然後再次運行該程序並運行。我不知道究竟是什麼問題,但感謝您的幫助。 –