即使文件存在,文件 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' 也不存在的主要内容,如果未能解决你的问题,请参考以下文章
即使存在与之关联的镶木地板文件,Hive 外部表也不显示任何数据