2014-10-06 106 views
1

所以我使用這些代碼行來讀取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

第一個錯誤發生,因爲在標準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() 
    ... 
2

您不能正確地轉義字符串反斜槓。注意在回溯中說「Coding \ x08odyfa」。您可以使用原始字符串

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

或躲避逃逸字符

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