使用jupyter笔记本的python中的FileNotFoundError

时间:2019-01-08 17:09:26

标签: python python-3.x pandas jupyter-notebook

这只是我面临的一个简单问题。我正在尝试在jupyter笔记本中读取我的csv文件。它显示了一个错误,提示FileNotFoundError。我在任何地方都找不到适合的解决方案。请帮助我摆脱这个错误,并阅读csv文件。预先感谢

错误是

 FileNotFoundError
 Traceback (most recent call last)
  <ipython-input-16-3b1f95fc5c0b> in <module>()
  ----> 1 dataset = pd.read_csv('D:\seminar\totaldata.csv')
  2 dataset.head()

      ~\Anaconda3\lib\site-packages\pandas\io\parsers.py in 
      parser_f(filepath_or_buffer, sep, delimiter, header, names, 
    index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, 
    converters, true_values, false_values, skipinitialspace, skiprows, 
    nrows, na_values, keep_default_na, na_filter, verbose, 
        skip_blank_lines, parse_dates, infer_datetime_format, 
     keep_date_col, date_parser, dayfirst, iterator, chunksize, 
    compression, thousands, decimal, lineterminator, quotechar, quoting, 
    escapechar, comment, encoding, dialect, tupleize_cols, 
  error_bad_lines, warn_bad_lines, skipfooter, doublequote, 
     delim_whitespace, low_memory, memory_map, float_precision)
    676                     skip_blank_lines=skip_blank_lines)
         677 
      --> 678         return _read(filepath_or_buffer, kwds)
       679 
        680     parser_f.__name__ = name

     ~\Anaconda3\lib\site-packages\pandas\io\parsers.py in 
      _read(filepath_or_buffer, kwds)
      438 
          439     # Create the parser.
      --> 440     parser = TextFileReader(filepath_or_buffer, **kwds)
   441 
    442     if chunksize or iterator:

  ~\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, f, 
   engine, **kwds)
          785             self.options['has_index_names'] = 
   kwds['has_index_names']
       786 
      --> 787         self._make_engine(self.engine)
         788 
       789     def close(self):

        ~\Anaconda3\lib\site-packages\pandas\io\parsers.py in 
    _make_engine(self, engine)
      1012     def _make_engine(self, engine='c'):
        1013         if engine == 'c':
 -> 1014             self._engine = CParserWrapper(self.f, 
 **self.options)
      1015         else:
   1016             if engine == 'python':

   ~\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, 
      src, **kwds)
       1706         kwds['usecols'] = self.usecols
       1707 
   -> 1708         self._reader = parsers.TextReader(src, **kwds)
      1709 
     1710         passed_names = self.names is None

 pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

      pandas\_libs\parsers.pyx in 
 pandas._libs.parsers.TextReader._setup_parser_source()

FileNotFoundError:文件b'D:\ seminar \ totaldata.csv'不存在

    dataset = pd.read_csv('D:\seminar\totaldata.csv')  
    dataset.head()

5 个答案:

答案 0 :(得分:1)

从我在评论中收集的信息来看,似乎是一个编码问题。

您可以通过首先安装chardet和以下代码来找到编码:

import chardet    
rawdata = open('D:\\seminar\\totaldata.csv', 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
print(charenc)

这将为您提供文件的编码。

一旦有了编码,就可以读为:

pd.read_csv('D:\\seminar\\totaldata.csv',encoding = 'encoding you found')

pd.read_csv(r'D:\seminar\totaldata.csv',encoding = 'encoding you found')

您将获得所有编码here的列表

答案 1 :(得分:0)

如果您尝试使用Jupyter Notebook读取本地计算机上的csv文件,并且如果尝试使用csv文件的相对路径来读取它,则可能会发现使用了完整的文件路径csv文件将修复错误,并允许熊猫读取文件。我有一个类似的问题,这对我有用。

答案 2 :(得分:0)

晚会。

如果您尝试使用Jupyter Notebook读取本地计算机上的csv文件,并且如果您尝试使用csv文件的相对路径读取它,则它将随着Current Working更改相对路径。目录+您的文件参数[FileName]

因为Jupyter Notebook如果未使用完整路径[绝对路径]之类的,则会自动附加默认路径

(注意:假设Jupyter的默认路径为

'C:\ Users \ ersar \ Desktop'#要获取当前工作目录,请先使用

import os
os.getcwd()

现在假设您提供作为

companies = pd.read_csv("companies.txt", sep="\t", encoding = "ISO-8859-1")

但是您的文件位于“ C:\ Users \ ersar \ Desktop \ Project \ Company”

然后它将在您当前的工作目录(cwd ='C:\ Users \ ersar \ Desktop')中搜索该文件,因此找不到该文件。

所以总是给全路径而不是相对路径

喜欢

companies = pd.read_csv("C:\\Users\\ersar\\Desktop\\Project\\Company\\companies.txt", sep="\t", encoding = "ISO-8859-1")

根据熊猫文档: filepath_or_bufferstr,路径对象或类似文件的对象 任何有效的字符串路径都是可以接受的。该字符串可以是URL。有效的URL方案包括http,ftp,s3,gs和file。对于文件URL,需要一个主机。本地文件可以是:file://localhost/path/to/table.csv。 如果要传递路径对象,pandas可以接受任何os.PathLike。 对于类似文件的对象,我们指的是具有read()方法的对象,例如文件处理程序(例如,通过内置的打开函数)或StringIO。

答案 3 :(得分:0)

从文件夹顶部复制完整路径位置并将其粘贴到pd.read_csv(.....)
这对我有用。

答案 4 :(得分:-1)

dataset = pd.read_csv('D:\seminar\\totaldata.csv')  
dataset.head()

使用反斜杠在字符串中转义特殊字符(此处\ t是制表符的特殊字符)会有所帮助。