1. 写在前面

这篇文章非常短,主要是记录下遇到的一个常见报错FileNotFoundError: [Errno 2] No such file or directory: ‘data/dataset.csv’, 虽然说这个报错的原因比较简单, 就是在当前的路径下面找不到这个文件, 但是有时候,我却不知道怎么解决,明明当前目录下有这个文件了, 为啥还说找不到? 找到哪里去了呢?

我这次的场景是这样: pycharm里面建立项目rec_pro, 在里面有个data目录,这里面有dataset.csv文件。然后在rec_pro下面建立了一个data_generator.py文件,想读取这里的dataset.csv文件,然后处理。

就这么简单的一个工作,怎么pd.read_csv的时候,就报了上面的这个错误, 我这次又是不得其解,明明没有问题呀。

一般这样是没有问题的, 但是我这边不知道怎么搞的,之前好几个项目切换运行过, 然后就这样子了,可能是默认搜索路径已经变了吧。 所以这里想记录的其实就是**如果默认搜索路径变了的时候,出现上面这种找不到对应文件的时候怎么解决?**

2. 解决办法

首先, 先查询一下,目前的搜索路径是哪个地方, 这样就直接找到了报错原因:

import os
print(os.getcwd())  # 这样就能看到目前Python搜索路径在哪里,如果报错找不到,多半是你这个路径下没有文件

我的就是这个问题, 由于我之前切换过很多项目,并运行,不知道怎么弄得,当项目的搜索路径还停留在上面一个项目的里面,所以肯定就找不到数据文件了呀。

所以解决办法: 就是把搜索路径切换到当前的项目里面就可以啦:

import sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__))  # 这里保险的就是直接先把绝对路径加入到搜索路径
sys.path.insert(0, os.path.join(BASE_DIR))
sys.path.insert(0, os.path.join(BASE_DIR, 'data'))  # 把data所在的绝对路径加入到了搜索路径,这样也可以直接访问dataset.csv文件了

# 这句代码进行切换目录
os.chdir(BASE_DIR)   # 把目录切换到当前项目,这句话是关键

这样,就解决了文件不存在的问题。 一般说文件不存在,基本上就是在当前路径下找不到文件, 这时候,首先检查下当前路径是哪里? 看看是不是我们项目的路径,如果不是切换。 这样一般就解决了。 如果还是报找不到文件(这种情况往往是跨目录访问了), 这时候,就用sys.path.insert方法把另一个目录的绝对路径加入到搜索路径里面就可以搞定了。

这里整理的其实算是一个方法论。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐