无法在python中追加文件

问题描述 投票:1回答:1

我有这个脚本是为了从雅虎财经中提取过去这么多年的股票价格。

代码运行后,我无法再次写入文件,即使它要检查存在的内容并追加。

我收到以下错误:FileExistsError:[Errno 17]文件存在:'stocks_dfs'

请指教!

'''python import bs4 as bs import pickle import requests import datetime as dt import pandas as pd import os import pandas_datareader.data as web from time import sleep

def save_sp500_tickers():
    resp = requests.get('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
    soup =bs.BeautifulSoup(resp.text,'lxml')
    table=soup.find('table',{'class':'wikitable sortable'})
    tickers=[]
    for row in table.findAll('tr')[1:]:
        ticker= row.findAll('td')[1].text
        tickers.append(ticker)

    with open("sp500ticker.pickle", "wb") as f:
        pickle.dump(tickers,f)

    print (tickers)

    return tickers
#save_sp500_tickers()

def get_data_from_yahoo(reload_sp500=False):
    if reload_sp500:
        tickers=save_sp500_tickers()
    else:
        with open("sp500ticker.pickle","rb") as f:
            tickers=pickle.load(f)
    if not os.path.exists('stock_dfs'):
        os.makedirs('stocks_dfs')

    start = dt.datetime(2016,1,1)
    end = dt.datetime.now()

    for ticker in tickers:
        print(ticker)

        if not os.path.exists('stocks_dfs/{}.csv'.format(ticker)):
            df = web.DataReader(ticker,'yahoo', start, end)
            df.to_csv('stocks_dfs/{}.csv'.format(ticker))
        else:
            print('Already have {}'.format(ticker))

get_data_from_yahoo()

'''

python-3.x yahoo-finance
1个回答
0
投票

FileExistsError:[Errno 17]文件存在:'stocks_dfs'

您抱怨此行失败:

    os.makedirs('stocks_dfs')

要支持重复调用,您需要指定exist_ok=True标志。

© www.soinside.com 2019 - 2024. All rights reserved.