【发布时间】:2019-06-13 06:00:21
【问题描述】:
免责声明:由于缺乏编码知识,我对 python 还很陌生。 我正在从 Yahoo Finance 提取历史数据,并希望通过它运行交易策略。我让回测大部分工作,但为了效率和可读性,我决定尝试创建一个具有更明确定义的变量的类。当我获取数据时,我想将其下载为 csv 文件,这样我就不必每次运行它时都重新获取数据。话虽如此,当我尝试在创建 csv 的文件名时使用我的变量时,我得到了 FileNotFoundError。但是,如果我只是在名称中硬编码,它可以创建 csv 没问题。我已经尝试了多种不同的方式来使用我的文件名变量,但除了硬编码之外没有其他方法。有人可以帮我了解发生了什么吗?
##Working Code:
class backtest:
def __init__(self, ticker):
start = '1/3/2000'
end = '1/3/2019'
sdate = pd.to_datetime(start)
edate = pd.to_datetime(end)
if os.path.islink('{}_{}_to_{}.csv'.format(ticker, start, end)) == True:
self.df = pd.read_csv('{}_{}_to_{}.csv'.format(ticker, start, end), parse_dates=True)
else:
##Failed attempt 1
##self.filename = '{}_{}_to_{}.csv'.format(ticker, start, end)
##self.df.to_csv(self.filename)
##Failed attempt 2
##self.filename = str(ticker) + '_' + start + '_to_' + end + '.csv'
##self.df.to_csv(self.filename)
self.df = web.DataReader(ticker, 'yahoo', sdate, edate)
self.df.to_csv('amzn_1/3/2000_to_1/3/19.csv')
amzn = backtest('amzn')
print(amzn.df.head(1))
【问题讨论】:
-
end = '1/3/2019'和self.df.to_csv('amzn_1/3/2000_to_1/3/19')有关联吗?我想知道这是不是一个错字... -
文件名中不能有“/”,你可以尝试重命名任何文件名来查看。
标签: python python-3.x pandas export-to-csv