1

我对python很陌生,而且我在编程方面没有太多经验。我尝试从特定目录打开 CSV 文件,但出现错误。

import csv
ifile = open('F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb");

错误:

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    ifile = open('F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb");
IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\\Study\\CEN\\Mini Project\\Data Sets\test.csv'

该怎么办 ????

4

3 回答 3

3

使用正斜杠:

ifile = open('F:/Study/CEN/Mini Project/Data Sets/test.csv', "rb");

或者至少避开你的反斜杠:

ifile = open('F:\\Study\\CEN\\Mini Project\\Data Sets\\test.csv', "rb");

另一种选择:使用 os.path.join:

out = os.path.abspath(os.path.join('path', 'test.csv'))
于 2013-10-16T13:23:17.383 回答
2

你的问题在这里:

'F:\Study\CEN\Mini Project\Data Sets\test.csv'
                                    ^^

因为您没有使用原始字符串,所以 Python 认为\t应该是制表符。

顺便说一句,您可以在错误消息中看到这一点:注意 Python 如何将所有反斜杠翻译成双反斜杠(这是文字反斜杠需要在普通字符串中表示的方式),除了“反斜杠加字母”实际上意味着什么特别的东西?

利用

ifile = open(r'F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb")

(并删除分号,您在 Python 中不需要它们)它应该可以工作。

于 2013-10-16T13:19:14.750 回答
0

您的问题在于“\t”并且缺乏对 os.path 包中各种工具的了解

处理这个问题的正确和最简单的方法是使用 os.path.normpath,结合字符串文字 r,它确保反斜杠不会被解释为转义字符。

(可以在此处找到有关 python 词法分析的文档:https ://docs.python.org/2/reference/lexical_analysis.html )

通过在命令行中键入“python”打开交互式 python,然后执行以下操作以查看它非常简单。

>>> import os
>>> path = r'F:\Study\CEN\Mini Project\Data Sets\test.csv'
>>> os.path.normpath(path)
'F:\\Study\\CEN\\Mini Project\\Data Sets\\test.csv'

为可能必须在 dos 和 unix(例如 OS X)上运行的脚本使用硬编码路径时,应使用 normpath。它将确保为您的特定环境使用正确类型的斜线

附带说明一下,如果您使用的是 CSV 文件,则应该使用 petl 库而不是 csv 模块。你会为自己节省很多时间和麻烦。安装它pip install petl

于 2014-10-28T14:56:42.507 回答