【问题标题】:FileNotFoundError file does not exist, but it does exist when using df = pd.read_csv. Python 3, Spyder IDEFileNotFoundError 文件不存在,但使用 df = pd.read_csv 时确实存在。 Python 3,Spyder IDE
【发布时间】:2018-02-13 18:30:38
【问题描述】:

我正在尝试编译一些已下载并存储在本地的股票数据。本地存储的数据在一个文件夹中,并且都包含未损坏的 csv 文件。这是我用来读取包含我保存的所有 csv 文件的文件夹的代码:

df = pd.read_csv('stock_dfs/{}.csv'.format(ticker.replace('.'and'-'and',','')))

当我运行完整的程序时,代码 BRK.B 总是显示为 FileNotFoundError:

FileNotFoundError: File b'stock_dfs/BRK-B.csv' does not exist

这个错误很有趣,因为在我的“stock_dfs”文件夹中,代码被写为 BRK.B,我认为 pandas 阅读器无法识别带有“.”的代码。

试图修复这个错误我添加了下面的代码,因为我认为它可能与“。”有关,但后来它变成了一个“-”,然后变成了一个“,”,当我终于涵盖了所有那些它仍然给出带有'-'的错误消息:(我指的'更改'是在打印错误时'BRK'和'B'之间的标点符号。)

ticker.replace('.'and'-'and',','')))

但我仍然收到 FileNotFoundError:

FileNotFoundError: File b'stock_dfs/BRK-B.csv' does not exist

我查看了其他问题,例如 CSV 文件不存在 - pandas 数据框,但即便如此,当我提供文件夹甚至 BRK.B csv 文件的完整路径时,它也会产生与上述相同的错误。指定文件夹路径的提示没有帮助,我一生都无法弄清楚为什么它不断将标点符号更改为错误中的一个代码,以及找不到明显存在的 csv 文件.

非常感谢任何帮助。

here is an image of the BRK.B file in the folder, as well as opened up in excel

【问题讨论】:

  • 这里的ticker 是什么?您的字符串插值不正确:Python 告诉您它正在寻找 BRK-B.csv,但您的文件名是 BRK.B.csv。请注意,'.'and'-'and',' 的计算结果为 ','(试试看)。
  • 该字符串是标识 "ticker" 的 for 循环的一部分。 python为什么要找BRK-B.csv?
  • 你从哪里得到ticker 的值?
  • 我保存了一个文件,其中包含我从谷歌金融 api 检索到的所有 500 个标准普尔股票代码。股票代码被定义为从谷歌从我也保存在 csv 文件中的每一个“股票代码”股票代码中检索到的信息。
  • 我已经更新了答案

标签: python-3.x csv


【解决方案1】:

在 Windows 上,文件夹分隔符是 \ 而不是 /

尝试以下方法:

df = pd.read_csv('stock_dfs\{}.csv'.format(ticker))

如果您想要独立于系统的分隔符,请在import os 之后使用os.sep,或者只使用from os import sep

如果你想把很多符号替换成空,试试:

symbols = '-,.'
for c in symbols:
    if c in ticker:
        ticker.replace(c, '')

代码名称和文件名之间显然存在差异,但与 Google 的代码名称相比,不知道您如何命名文件,很难猜出具体错误。

要查找名称,可以尝试在文件夹中查找:

from os import listdir, getcwd
from os.path import isfile, join
print([f for f in listdir(mypath) if isfile(join(mypath, f)) and f.upper().startswith('BRK')])

这将列出mypath 文件夹中以BRK 开头的所有文件。

最后,不是:

这个错误很有趣,因为在我的“stock_dfs”文件夹中,代码被写为 BRK.B,我认为 pandas 阅读器无法识别带有“.”的代码。

使用 '.' 并没有错。 (点)在文件名中,即您可以完美地拥有一个名为 some.file.with.long.name.txt.csv

的文件

【讨论】:

  • 我确实修复了文件夹分隔符,但我仍然收到错误
  • 错误是什么? “文件 b'stock_dfs/BRK-B.csv' 不存在”?你的文件是stock_dfs\BRK.B.csv,对吧?
  • 这是错误“FileNotFoundError: File b'stock_dfs/BRK-B.csv' 不存在”
  • 根据您的图像,您的文件被称为 BRK.B(并且假定为 .csv 扩展名)而不是 BRK-B.csv,这似乎是 ticker 值。股票代码值来自某个地方,但显然不是来自读取文件夹中的文件?
  • 我看到了你的其他评论。代码名称和文件名称之间显然存在差异,但是在不知道您如何命名文件与如何命名代码名称的情况下,很难猜出错误。我已经更新了我的答案,以展示如何替换多个值。
【解决方案2】:

我找到了问题。当我从 Wikipedia 获取股票代码并将它们编译成 csv 文件时,所有使用“。”的股票代码打印时用 ',' 补充,然后是 '-'。

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 2020-06-04
    • 1970-01-01
    • 2017-10-19
    • 2016-03-08
    • 2011-01-09
    • 2018-08-12
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多