【问题标题】:File b'train.csv' does not exist even though file exist即使文件存在,文件 b'train.csv' 也不存在
【发布时间】:2018-11-16 05:42:30
【问题描述】:

代码:

import pandas as pd
train_df = pd.read_csv("train.csv")

错误:

FileNotFoundError                   Traceback (most recent call last)
    <ipython-input-17-05c7c432b69f> in <module>()
      1 import pandas as pd
      2 
    ----> 3 train_df = pd.read_csv("../input/train.csv")

    /anaconda3/lib/python3.6/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, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
    707                     skip_blank_lines=skip_blank_lines)
    708 
    --> 709         return _read(filepath_or_buffer, kwds)
    710 
    711     parser_f.__name__ = name

    /anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    447 
    448     # Create the parser.
    --> 449     parser = TextFileReader(filepath_or_buffer, **kwds)
    450 
    451     if chunksize or iterator:

    /anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
    816             self.options['has_index_names'] = kwds['has_index_names']
    817 
    --> 818         self._make_engine(self.engine)
    819 
    820     def close(self):

    /anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
    1047     def _make_engine(self, engine='c'):
    1048         if engine == 'c':
    -> 1049             self._engine = CParserWrapper(self.f, **self.options)
    1050         else:
    1051             if engine == 'python':

    /anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
    1693         kwds['allow_leading_cols'] = self.index_col is not False
    1694 
    -> 1695         self._reader = parsers.TextReader(src, **kwds)
    1696 
    1697         # XXX

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

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

FileNotFoundError: File b'../input/train.csv' does not exist

请帮忙!我尝试使用pd.read_csv("../input/train.csv"),但仍然出现错误。我是使用 Jupyter notebook 的 Mac 用户。

【问题讨论】:

  • 你的train.csv在哪里给absolute path to it
  • jupyter notebook 默认会查看自己的文件夹。如果你的“train.csv”在别的地方,你必须给它绝对路径

标签: python python-3.x pandas csv tensorflow


【解决方案1】:
  1. 您确定路径正确吗?

train_df = pd.read_csv("./input/train.csv") (如果 csv 文件位于与您的 jupyter notebook 相同的文件夹中的输入文件夹中)

最简单的方法是您拥有一个包含 juptyer 笔记本和 csv 文件的文件夹。那么你只需要这样做:

train_df = pd.read_csv("./train.csv") train_df = pd.read_csv("train.csv")

  1. 尝试使用 train_df = pd.read_csv("train.csv",encoding='utf-8' )

摆脱'b前面的'b'../input/train.csv'

【讨论】:

  • 非常感谢朱莉娅 它有效。我只需要将 csv 文件放在与 jupyter notebook 相同的文件夹中
  • 很高兴听到它有帮助! :)
【解决方案2】:

尝试使用这样的绝对路径。行首的 r 有助于将整个字符串按原样读取为原始字符串,因此使用 r 时,您不必担心转义斜杠

import pandas

myFile = pandas.read_csv(r"C:\Users\samarnat\Documents\Personal Docs\Projects\train.csv",encoding='utf-8')

【讨论】:

    【解决方案3】:

    我昨天遇到了确切的问题,以下几点帮助我解决了问题

    1. 没有适合我的组合 filePath。
    2. 我手动添加了文件的完整路径,它对我有用。

    所以现在我在我的代码中添加了单行代码,无论文件夹结构如何,它都可以一直工作。 提供文件的绝对路径是关键

    csv_file_abs = os.path.abspath(csv_file)
    print(f'ABS PATH: {csv_file_abs}')
    df = pd.read_csv(csv_file_abs)
    

    我希望这会有所帮助,如果这个问题可以通过其他方式解决,请分享您的想法,这是快速修复。

    【讨论】:

    • 优秀的通用方法。使用 os.getcwd() 检查当前工作目录总是安全的。 [确保导入操作系统]。当我将 jupyter notebook 复制到其他目录时遇到了问题。但在内部它仍然指向我的旧目录路径。 os.getcwd() 帮助确定正确的 cwd,然后您的 os.path.abspath(csv_file) 确保有一个万无一失的解决方案。
    【解决方案4】:

    可能的原因:

    1. 输入的路径不正确或有多个同名文件夹。
    2. 文件名不正确。
    3. 文件扩展名不是csv,可能是xlsx(难得机会)

    希望这会有所帮助。

    【讨论】:

    • 导入行及其下一行也有一个“`”标记。请检查一下
    【解决方案5】:

    尽量给出文件的绝对路径而不是相对路径。

    【讨论】:

      【解决方案6】:

      我发现,如果您使用的是新版本的 Excel 扩展程序,您将面临问题。 首先保存文件,例如。

      1. 另存为文件名 = 测试

      2. 在名称部分下方选择

        • CSV UTF-8(逗号分隔)(*.csv)

      现在使用 Jupyter

      import pandas as pd
      test = pd.read_csv("test.csv")
      

      【讨论】:

        【解决方案7】:

        在文件字符串的开头或结尾检查 空格 空格字符。

        【讨论】:

        • 什么是“空白空间”?如果存在空格字符,则它不是“空的”。如果为空,则不在字符串中。
        【解决方案8】:

        使用 !pwd 找出您正在使用的目录。然后在同一个地方上传数据集。然后将目录的路径复制粘贴到 pd.read_csv 命令中

            > df=pd.read_csv('/home/jovyan/demo/melb_data.csv')
        

        地址中缺少的可能是jovyan 术语

        【讨论】:

          【解决方案9】:

          如果您的文本或 csv 文件位于您的 jupyter 笔记本所在的同一文件夹中,那么如果您的 csv 文件明确显示 .csv,则不要写入 pd.read_csv('test.csv') 写入 pd.read_csv("test") bcz扩展然后只有第一种方式工作,否则第二种方式。 例如,如果您的文件名看起来像“test”,则使用 pd.read_csv('test') 否则文件名是“test.csv”,然后使用 pd.read_csv('test.csv') 这取决于保存文件的名称。

          【讨论】:

          • 欢迎来到 SO。这个答案很难理解。请花时间使用正确的标点符号和正确的句子。
          猜你喜欢
          • 2014-02-20
          • 2021-06-02
          • 2019-08-08
          • 1970-01-01
          • 2015-10-26
          • 2018-04-07
          • 2019-11-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多