【问题标题】:pandas.read_csv FileNotFoundError: File b'\xe2\x80\xaa<etc>' despite correct pathpandas.read_csv FileNotFoundError: File b'\xe2\x80\xaa<etc>' 尽管路径正确
【发布时间】:2017-06-29 04:06:58
【问题描述】:

我尝试使用pd.read_csv() 函数加载.csv 文件时出现错误,尽管文件路径正确且使用原始字符串。

import pandas as pd
df = pd.read_csv('‪C:\\Users\\user\\Desktop\\datafile.csv')
df = pd.read_csv(r'‪C:\Users\user\Desktop\datafile.csv')
df = pd.read_csv('C:/Users/user/Desktop/datafile.csv')

all 给出以下错误:

FileNotFoundError: File b'\xe2\x80\xaaC:/Users/user/Desktop/tutorial.csv'(或相关路径)不存在。

只有当我将文件复制到工作目录时,它才会正确加载。

是否有人知道可能导致错误的原因?

我之前使用完整文件路径加载了其他数据集,没有任何问题,但我目前只遇到问题,因为我重新安装了我的 python(通过 Anaconda 包安装程序)。


编辑
我找到了导致问题的原因。
当我从文件属性窗口复制文件路径时,我无意中复制了另一个似乎不可见的字符。
分配复制的 string 也会产生 unicode 错误。

删除该不可见字符使上述任何代码都能正常工作。

【问题讨论】:

  • e2 80 aa 是 U+202A 的 UTF-8 编码,从左到右的嵌入符号。很确定这不属于路径字符串,因此它表明您遇到了字符串编码问题。如果您在 py27 (u'C:\\...') 中,请尝试 Unicode 字符串文字;如果您在 py3 (b'C:\\...') 中,请尝试字节字符串文字。
  • 如果您从路径中删除驱动器是否有效(即“/Users/user/Desktop/datafile.csv”)?
  • 不确定U+202A 是怎么进来的。这是剪切/粘贴的吗?如果是这样,请手动删除并重新输入。您系统上的默认语言是什么?如果它是从右到左写的,那么这很有趣!我有点惊讶该字符没有在文件系统中被过滤掉。
  • 最可能的原因似乎是您使用的编码有问题。
  • 我也遇到了同样的问题。当我从 Windows 中文件属性的安全选项卡中腼腆文件的路径时,似乎出现了额外的字符。有人知道这个非 unicode 字符是什么吗?

标签: python csv pandas dataframe file-not-found


【解决方案1】:

尝试使用os.path.join 创建文件路径:

import os
f_path = os.path.join(*['C:', 'Users', 'user', 'Desktop', 'datafile.csv'])
df = pd.read_csv(f_path)

【讨论】:

  • 我尝试按照您的建议创建文件路径,但没有成功。当我尝试合并它时出现错误“FileNotFoundError: File b'C:Users\\user\\Desktop\\tutorial.csv' 不存在”。按照 cmaher 的建议删除驱动器是可行的,但我想知道将来如果我需要说明驱动器应该输入什么?
  • 在 google 或 SO 上搜索您的问题,您会找到解决方案
  • 我设法确定了我面临的问题。它是从文件属性中找到的文件路径复制的不可见字符,它弄乱了文件路径。毕竟删除那个隐形字符是有效的。
【解决方案2】:

$10 表示您的文件路径相对于 .py 文件的位置是正确的,但相对于您调用 python 的位置不正确

例如,假设 script.py 位于 ~/script/,而 file.csv 位于 ~/。假设 script.py 包含

import pandas
df = pandas.read_csv('../file.csv') # correct path from ~/script/ where script.py resides

如果您从 ~/ 运行 python script/script.py,您将收到 FileNotFound 错误。但是,如果您从 ~/script/ 运行 python script.py,它将起作用。

【讨论】:

  • 我使用的是完整文件路径,所以我的 10 美元是安全的!我找到了导致此问题的问题!这是一个被复制的隐形字符。看起来像一个小问题的恐慌!
  • @Impuls3H 你所说的“隐形角色”是什么意思?尾随空格?
  • 太好了,我现在欠一个陌生人 10 美元。
  • @Ken 我刚加入俱乐部
【解决方案3】:

试试这个,看看它是否有效。这与您提供的路径无关。

pd.read_csv(r'C:\Users\aiLab\Desktop\example.csv')

这里r 是一个特殊字符,表示原始字符串。因此,将其添加到您的字符串文字前。

https://www.journaldev.com/23598/python-raw-string:

Python 原始字符串是通过在字符串文字前加上“r”来创建的 或“R”。 Python 原始字符串将反斜杠 () 视为文字字符。 当我们想要一个包含反斜杠的字符串时,这很有用 并且不希望它被视为转义字符。

【讨论】:

  • 这是做什么来解决问题的?它确实为我解决了这个问题,但我不明白为什么。
  • 修复了我也遇到的同样问题.. 仍然不知道是什么导致了错误以及如何修复它。非常感谢
【解决方案4】:

我知道跟随是一个愚蠢的错误,但它可能是你的文件的问题。

我已手动将文件从 adfa123 重命名为 abc.csv。文件扩展名被隐藏,重命名后实际文件名变为abc.csv.csv。然后我从名称中删除了多余的.csv,一切都很好。

希望它可以帮助其他人。

【讨论】:

    【解决方案5】:
    import pandas as pd
    
    path1 = 'C:\\Users\\Dell\\Desktop\\Data\\Train_SU63ISt.csv'
    path2 = 'C:\\Users\\Dell\\Desktop\\Data\\Test_0qrQsBZ.csv'
    
    df1 = pd.read_csv(path1)
    df2 = pd.read_csv(path2)
    
    print(df1)
    print(df2)
    

    【讨论】:

      【解决方案6】:

      我试图从我的 'c:\' 驱动器中的文件夹中读取 csv 文件,但它引发了 escape,type error, unicode 的错误......因此,但此代码有效 只需取一个变量,然后添加 r 即可读取它。

      rank = pd.read_csv (r'C:\Users\DELL\Desktop\datasets\iris.csv') 
      df=pd.DataFrame(rank)
      

      【讨论】:

      【解决方案7】:

      关于如何删除看起来不可见的字符还有另一个问题。

      我的解决方案是从文件窗口而不是属性窗口复制文件路径。

      这没问题,只是你应该填写文件路径。

      【讨论】:

      • 我遇到了同样的问题,无论出于何种原因,如果您从属性窗口复制它会添加额外的不可见字符。我能够验证这一点,因为如果我手动输入路径,它工作正常。这是迄今为止我遇到的最奇怪的错误之一。
      【解决方案8】:

      遇到了同样的问题。路径是正确的。 更改文件名似乎可以解决问题。

      旧文件名:Season 2017/2018 Premier League.csv 新文件名:test.csv

      可能是空格或“/”

      【讨论】:

      • 有问题的路径中似乎没有空格。
      【解决方案9】:

      如果您使用的是 Windows 机器。尝试检查文件扩展名。 文件很有可能被保存为 fileName.csv.txt 而不是 fileName.csv 您可以通过选择文件夹选项下的文件扩展名复选框来检查这一点(请找到截图)

      以下代码对我有用:

      import pandas as pd
      df = pd.read_csv(r"C:\Users\vj_sr\Desktop\VJS\PyLearn\DataFiles\weather_data.csv");
      

      如果 fileName.csv.txt,将其重命名/更正为 fileName.csv

      windows 10 screen shot

      希望它有效, 祝你好运

      【讨论】:

        【解决方案10】:

        在 Windows 系统上,您应该尝试使用 os.path.normcase

        它规范了路径名的大小写。在 Unix 和 Mac OS X 上,这将返回不变的路径;在不区分大小写的文件系统上,它将路径转换为小写。在 Windows 上,它还将正斜杠转换为反斜杠。如果路径的类型不是 str 或 bytes(直接或间接通过 os.PathLike 接口),则引发 TypeError。

        import os
        import pandas as pd
        
        script_dir = os.getcwd()
        file = 'example_file.csv'
        data = pd.read_csv(os.path.normcase(os.path.join(script_dir, file)))
        

        【讨论】:

          【解决方案11】:

          使用 Visual Studio 提供的交互功能运行文件时,我遇到了同样的问题。切换到在本机命令行上运行,它对我有用。

          【讨论】:

            【解决方案12】:

            对于我的特定问题,无法正确加载文件是由于我从 windows 中文件属性的安全选项卡复制文件路径时引入的“不可见”字符。

            这个字符是e2 80 aa,U+202A的UTF-8编码,从左到右的嵌入符号。当您找到字符(字符串中最左边的字符)时,可以通过擦除(按退格键或删除)轻松删除它。

            注意:我选择回答是因为这里的答案没有回答我的问题,而且我相信一些人(如 cmets 中所见)可能会遇到与我相同的情况。由于我没有将此问题标记为已解决,因此似乎不时有新的答案。

            【讨论】:

              【解决方案13】:
              data = pd.read_csv('C:\\Users\username\Python\mydata.csv')
              

              这对我有用。请注意“C:\\”中的双“\\”,其余文件夹仅使用单个“\”。

              【讨论】:

                【解决方案14】:

                我在使用 JupyterLab + Anaconda 时遇到了类似的问题,并使用我的浏览器在 IDE 上输入内容。

                我的问题更简单——有一个非常微妙的拼写错误。我不必使用原始文本 - 转义或使用 {{r}} 字符串对我有用:)。如果您将 Anaconda 与 Jupyter Lab 一起使用,我相信内核从您打开笔记本的位置开始,即工作目录是顶级文件夹。

                【讨论】:

                  猜你喜欢
                  • 2018-11-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-05-12
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多