打开文件并读取数据

时间:2014-10-06 16:57:29

标签: python filereader

所以我使用这些代码行来读取Excel文件。

fin=open("C:\Users\Student\Desktop\Python Coding\bodyfat.csv",'rU')
fin.readline()

但是我一直收到这个错误声明,我不知道发生了什么

>>> fin=open("C:\Users\Student\Desktop\Python Coding\bodyfat.csv",'rU')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 22] invalid mode ('rU') or filename: 'C:\\Users\\Student\\Desktop\\Python Coding\x08odyfat.csv'
>>> fin.readline()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'fin' is not defined

对这里发生的事情有任何想法吗?

2 个答案:

答案 0 :(得分:2)

您没有正确转义字符串反斜杠。请注意在回溯中它写着“Coding \ x08odyfa”。您可以使用原始字符串

r"C:\Users\Student\Desktop\Python Coding\bodyfat.csv"

或转义转义字符

"C:\\Users\\Student\\Desktop\\Python Coding\\bodyfat.csv"

答案 1 :(得分:2)

发生第一个错误是因为在标准Python字符串中,反斜杠对跟随它们的字符做了有趣的事情(详见the documentation on string literals):

>>> "C:\Users\Student\Desktop\Python Coding\bodyfat.csv"
'C:\\Users\\Student\\Desktop\\Python Coding\x08odyfat.csv'
                                         # ^ what?

发生第二个错误,因为在发生第一个错误后,永远不会分配fin

最简单的解决方法是使用前缀为r的“原始字符串”来表示反斜杠应被视为普通字符:

>>> r"C:\Users\Student\Desktop\Python Coding\bodyfat.csv"
'C:\\Users\\Student\\Desktop\\Python Coding\\bodyfat.csv'

(不要担心加倍,这只是Python指示那些是字面反斜杠的方式,而不是转义后面的字符。)

此外,您应该使用with“上下文管理器”进行文件处理:

with open(r"...") as fin:
    line = fin.readline()
    ...