为什么我在Mac OS X 2.7.5上找不到Python 2.7中的文件?

时间:2014-01-08 07:34:51

标签: python macos file-io directory

使用以下代码:

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机器上完美运行。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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