即使文件存在,文件 b'train.csv' 也不存在

Posted

技术标签:

【中文标题】即使文件存在,文件 b\'train.csv\' 也不存在【英文标题】: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”在别的地方,你必须给它绝对路径 【参考方案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")

    尝试使用 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】:

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

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

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

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】:

可能的原因:

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

希望这会有所帮助。

【讨论】:

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

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

【讨论】:

【参考方案6】:

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

    另存为文件名 = 测试

    在名称部分下方选择

    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。这个答案很难理解。请花时间使用正确的标点符号和正确的句子

以上是关于即使文件存在,文件 b'train.csv' 也不存在的主要内容,如果未能解决你的问题,请参考以下文章

即使存在,Mongo也不返回文件

即使文件存在,readFileSync也不返回任何数据

即使存在与之关联的镶木地板文件,Hive 外部表也不显示任何数据

即使使用 -g3 或 -ggdb3 或 -gdwarf-4 也不存在 gdb 宏符号

即使我创建了存储过程也不存在

即使我在 .cpp 文件中实例化一个虚拟对象,在 .cpp 文件中定义模板函数也不起作用