【问题标题】:Why can't I find a file in Python 2.7 on Mac OS X 2.7.5?为什么我在 Mac OS X 2.7.5 上找不到 Python 2.7 中的文件?
【发布时间】:2014-01-08 07:34:51
【问题描述】:

使用以下代码:

fileName = 'Data\\all_earthquakes.csv'
with open(fileName, 'rb') as csv_file:
    attrHeaderRow = csv_file.readline().strip()

我收到以下错误:

IOError: [Errno 2] No such file or directory: 'Data\\all_earthquakes.csv'

在我的 Windows 7 机器上运行良好。

【问题讨论】:

  • 我想知道你为什么发布这个问题。
  • 因为我遇到了这个问题,并在发布问题的中途发现了它。决定回答它,以防万一没有人遇到这个问题。我从来没有用过 Python,而且我已经用了 5 年了。

标签: python macos file-io directory


【解决方案1】:

Windows 和 Mac OS X 使用不同的字符来分隔路径中的元素。 Windows 使用反斜杠,Mac OS X(和 Linux/UNIX)使用正斜杠。 Python 会为您解决这个问题:使用 os.path.join 为当前操作系统使用正确的分隔符构建路径,或者如果您需要用于路径分隔的实际字符,请使用 os.sep

import os
import sys

fileName = os.path.join('Data', 'all_earthquakes.csv')
print('Directory separator on your platform ({}): {}'.format(sys.platform, os.sep))

请注意,在使用 Windows API 时,Windows 通常也接受正斜杠作为路径分隔符 - 只是 CMD.EXE 不接受它们。这就是为什么在 Windows 上,os.altsep 设置为正斜杠(人们只是在所有路径中使用正斜杠,即使在 Windows 上也是如此)。

【讨论】:

    【解决方案2】:

    您需要按如下方式更改您的代码:

    fileName = 'Data/all_earthquakes.csv'
    with open(fileName, 'rb') as csv_file:
        attrHeaderRow = csv_file.readline().strip()
    

    Mac OSX 使用不同的文件结构,这导致目录名称中的正斜杠或反斜杠不同。

    如果您想对此进行检查,请使用以下代码:

    from sys import platform as _platform
    if _platform == "linux" or _platform == "linux2":
    # linux
    elif _platform == "darwin":
    # OS X
    elif _platform == "win32":
    # Windows...
    elif _platform == "cygwin":
    #cygwin install
    

    更多信息可以在这里找到:

    http://docs.python.org/2/library/platform.html

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2016-01-07
      • 2012-08-16
      • 2011-04-18
      相关资源
      最近更新 更多