【问题标题】:python - IOError: [Errno 2] No such file or directory on OSX Yosemitepython - IOError:[Errno 2] OSX Yosemite 上没有这样的文件或目录
【发布时间】:2015-01-27 00:57:41
【问题描述】:

首先,在这个论坛上有一个关于相同错误号的问题。我正在寻求帮助;但是,在尝试了那里提到的解决方案后,我觉得我的问题有所不同。

我在 Mac OS X Yosemite 上通过 IDLE 使用 Python 2.7。

我正在尝试将下载的数据写入已创建的特定文件夹中的 .csv 文件。产生错误的代码行是

fc = open('%s/try.csv' % (dl_dir), 'w')    

在哪里

dl_dir = 'quandl/futures/ES'

我得到的错误是

    Traceback (most recent call last):
    File "<pyshell#21>", line 1, in <module>
    fc = open('%s/try.csv' % (dl_dir), 'w')
    IOError: [Errno 2] No such file or directory: 'quandl/futures/ES/try.csv'

起初我执行了这个命令,但文件try.csv 没有出现在所述目录中,因为open 上的文档说如果该文件不存在,该命令将创建该文件。收到此错误后,我在上述目录中创建了try.csv,并授予了'read','write''execute' 文件的权限

    Parikshits-MacBook-Pro:ES parikshitbhinde$ chmod a+wrx try.csv
    Parikshits-MacBook-Pro:ES parikshitbhinde$ ls -l
    total 8
    -rwxrwxrwx  1 parikshitbhinde  staff  4 Jan 26 19:18 try.csv

即使在此之后,我仍然会遇到同样的错误。有什么帮助吗?

注意:即使没有在 Ubuntu 14.01 上的 Python 2.7 上创建文件,代码也可以工作

谢谢

【问题讨论】:

  • 我看到您使用的是相对路径。是否有可能您在 Mac 上以不同的路径运行脚本?尝试使用相同的相对位置启动它或将 dl_dir 更正为绝对路径。
  • 你的意思是dl_dir = '~/quandl/futures/ES' 吗?我也尝试过同样的错误。如果没有,那么您能否更具体一点。另外,我刚刚打开IDLE并运行代码,有没有办法改变IDLE的工作目录?
  • os.path.dirname(__file__) 将为您提供当前 python 文件的路径。将其用于相对文件路径。或者使用绝对路径。我不会依赖~,因为这可能取决于平台,并根据运行脚本的用户进行更改。
  • 它在 Ubuntu 中工作的原因可能是因为找到了该文件夹,即使该文件尚未创建。
  • 我在解释器上运行命令,而不是脚本。我将尝试将命令放在与 csv 相同的目录中的脚本中,然后尝试运行该脚本。

标签: python python-2.7 osx-yosemite ioerror


【解决方案1】:

您无法创建文件,因为父目录不存在,相对于工作目录。

在 python shell 中尝试os.getcwd() 以获取当前工作目录。 os.chdir() 可用于更改工作目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多