Python 3:如何修复FileNotFoundError:[Errno 2]没有这样的文件或目录

时间:2019-06-13 06:00:21

标签: python python-3.x pandas export-to-csv

免责声明:我对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))

1 个答案:

答案 0 :(得分:0)

尝试使用以下文件名作为文件名

self.filename = str(ticker) + '_' + str(sdate) + '_to_' + str(edate) + '.csv'

在这里,日期和日期是class 'pandas._libs.tslibs.timestamps.Timestamp'。因此,在附加时必须将它们转换为字符串。

控制台中的结果将是:

High ... Adj Close Date ... 2000-01-03 89.5625 ... 89.375

文件名将为amzn_2000-01-03 00:00:00_to_2019-01-0300:00:00.csv。如以上注释中所述,文件名不应包含特殊字符'/'。因此,请使用sdate而不是strat。