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

2024-05-14 21:54:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

怎么办????


Tags: csvtest目录projectdata编程sets经验
3条回答

你的问题是:

'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中不需要它们)它应该可以工作。

使用正斜杠:

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'))

您的问题是“\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安装

相关问题 更多 >

    热门问题