我是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'
怎么做????
答案 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