从特定目录打开python中的csv文件时出错

时间:2013-10-16 13:17:04

标签: python csv

我是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'

怎么做????

3 个答案:

答案 0 :(得分: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'))

答案 1 :(得分: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中不需要它们)它应该可以工作。

答案 2 :(得分: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

进行安装