【问题标题】:Python 3: How to fix FileNotFoundError: [Errno 2] No such file or directoryPython 3:如何修复 FileNotFoundError:[Errno 2] 没有这样的文件或目录
【发布时间】: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


【解决方案1】:

为了使文件名尝试:

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

这里,sdate 和 edate 是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。如上面的 cmets 所述,文件名不应包含特殊字符“/”。所以使用 sdate 而不是 strat。

【讨论】:

  • 这很有帮助,谢谢!那么,如果我对文件名进行硬编码,为什么我可以在文件名中使用“/”呢?
  • 这些类型的特殊字符具有单独的功能,如果使用不当可能会影响操作系统。斜线一般用作分隔目录或目录中文件的分隔符。即使由于某种限制(我不确定),文件名中使用了斜杠,操作系统可能会混淆并可能以错误的方式解释它。
  • 对我来说,即使我使用您的代码在文件名中硬编码“/”,我也会收到错误:` File "/home/runner/.local/lib/python3.6/site-packages/ pandas/core/generic.py”,第 3020 行,在 to_csv formatter.save() 文件中“/home/runner/.local/lib/python3.6/site-packages/pandas/io/formats/csvs.py”,第 157 行,保存压缩=self.compression) 文件“/home/runner/.local/lib/python3.6/site-packages/pandas/io/common.py”,第 424 行,在 _get_handle f = open(path_or_buf , mode, encoding=encoding, newline="") FileNotFoundError: [Errno 2] No such file or directory: 'amzn_1/3/2000_to_1/3/19.csv'`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 2018-09-18
  • 2018-01-24
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多