【问题标题】:Pandas.read_csv() FileNotFoundError even though file existsPandas.read_csv() FileNotFoundError 即使文件存在
【发布时间】:2020-03-31 13:01:39
【问题描述】:

我尝试在我的 Anaconda Jupyter Notebook 中运行这段 Python 3 代码(相同的单元格,没有其他内容):

train  = pd.read_csv('tutorial\labeledTrainData.tsv', header=0, delimiter="\t", quoting=3) #OK!
test   = pd.read_csv('tutorial\testData.tsv',         header=0, delimiter="\t", quoting=3) #FileNotFoundError!

第一行运行正常,但第二行出错:

FileNotFoundError: [Errno 2] File b'tutorial\testData.tsv' does not exist: b'tutorial\testData.tsv'

dir 命令在相应的 tutorial 文件夹中给出:

06.12.2019  15:38    <DIR>          .
06.12.2019  15:38    <DIR>          ..
05.05.2018  20:07        33 556 378 labeledTrainData.tsv
05.05.2018  20:07           282 796 sampleSubmission.csv
05.05.2018  20:07        32 724 746 testData.tsv
05.05.2018  20:07        67 281 491 unlabeledTrainData.tsv

即“问题”文件 testData.tsv 在那里,在“好” labeledTrainData.tsv 旁边。

如果我改变第二行的斜线方向并像这样运行它:

train  = pd.read_csv('tutorial\labeledTrainData.tsv', header=0, delimiter="\t", quoting=3) #OK!
test   = pd.read_csv('tutorial/testData.tsv',         header=0, delimiter="\t", quoting=3) #OK!

然后两条线都运行得很好。同样,如果我将 r 放在问题文件名之前,它们运行良好:

test   = pd.read_csv(r'tutorial\testData.tsv',         header=0, delimiter="\t", quoting=3) #OK!

我检查了两个文件的属性——没有一个是隐藏的,也不是只读的,权限是相等的,等等。

更改单元格中的行顺序不会更改错误 - 相同的文件有问题...

我想知道问题pandas(或python?)在第二行代码中看到了什么,而我没有看到?

【问题讨论】:

  • 如果您要寻找更通用的解决方案,请查看pathlib 模块
  • 在路径中使用正斜杠 / 或双反斜杠代替反斜杠 ``。
  • 感谢您对我的问题的评论。是的,就像我最初提到的那样,r,反斜杠/ - 他们都工作得很好。我的问题是为什么两行相同的代码 - 一个有效,另一个失败?是什么导致第二行抛出异常,而第一行在相同条件下工作正常?

标签: python pandas file csv file-io


【解决方案1】:

Python 将\t 解释为字符串'tutorial\testData.tsv' 中的一个制表符。

正如您所发现的,您可以通过使用r"..." 将其指示为raw-string 来更改它,这意味着python 忽略反斜杠。

【讨论】:

  • 非常感谢!好像就是这样!有趣的是测试您的建议,将'tutorial\testData.tsv' 替换为'tutorial\unlabeledTrainData.tsv' 并猜猜是什么原因,我遇到了SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 8-9: truncated \uXXXX escape 的另一个错误))然后我意识到现在路径字符串中的\u 被解释为特殊象征 。好的,无论如何,再次感谢您的帮助!
【解决方案2】:

您是否尝试过使用完整路径? (从'C:\'开始)

【讨论】:

    【解决方案3】:

    试试这个方法。 test = pd.read_csv('tutorial\testData.tsv', header=0, delimiter=r'\t',quoting=3)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2017-06-29
      • 2020-07-14
      相关资源
      最近更新 更多