2015-07-12 101 views
2

這是我的函數:函數打開.txt文件和打印內容不工作

def read_text(): 
    quotes = open("C:\blop\movie_quotes.txt") 
    contents_of_file = quotes.read 
    print(contents_of_file) 
    quotes.close 
read_text() 

我只是想讀取文件和打印文件中的文本,但我得到這個錯誤:

Traceback (most recent call last):File "C:/Python27/detect_profanity.py", line 6, in <module> 
read_text()File "C:/Python27/detect_profanity.py", line 2, in read_text 
quotes = open("C:\blop\movie_quotes.txt") 
IOError: [Errno 22] invalid mode ('r') or filename: 'C:\x08lop\\movie_quotes.txt' 

我該如何解決?

+0

除了使用'原始字符串' - 'r「C:\ blop \ movie_quotes.txt」',你應該使用[with open](http://stackoverflow.com/questions/9282967/how-to-open- a-file-using-the-open-with-statement)而不是僅僅「打開」 – Vaulstein

回答

6

假設"C:\blop\movie_quotes.txt"存在,Python是它傳遞到open()導致問題之前轉換\b\x08文件。您應該在r之前加上字符串,以使其成爲原始字符串,並且\b不會轉換爲任何內容(\\b以外,用於轉義\)。

您代碼中的另一個問題是您正在執行 - contents_of_file = quotes.read。這隻會將read()函數的參考名稱放入contents_of_file中。我想你想讀取文件的內容,所以你應該將讀取函數稱爲 - contents_of_file = quotes.read()

例子:

def read_text(): 
    quotes = open(r"C:\blop\movie_quotes.txt") 
    contents_of_file = quotes.read() 
    print(contents_of_file) 
    quotes.close() 
read_text() 

您還可以在這裏使用with語句:

def read_text(): 
    with open(r"C:\blop\movie_quotes.txt") as quotes: 
     contents_of_file = quotes.read() 
     print(contents_of_file) 
read_text() 
+0

真棒!感謝您的幫助 –

+0

請記住接受答案,通過點擊答案左側的刻度線,這對社區會有幫助。 –

+1

您忘記了閱讀模式,'close()'後面的圓括號,並且'open開放的可用性爲' – ytpillai

-1

'\b'是Python中的特殊字符。與'\n'相同是一個特殊字符,意思是換行符,'\t'是製表符,而'\r'是回車符。

'\\\\'是一個特殊字符,意思是反斜槓字符。所以每次你需要一個反斜槓時,你需要將它轉義出來,並且爲了打印一個反斜槓。

open("C:\blop\movie_quotes.txt")應該open("C:\\\\blop\\\\movie_quotes.txt")

你在你的代碼有其他錯誤太多。每次函數調用後,您都會丟失括號(),如read()close()

+0

構建路徑需要一個反斜槓,並且OP不必在字符串中轉義反斜槓。他可以做一些像'r「C:\ blop \ movie_quotes.txt」'。 'r'將反斜槓作爲非esscape字符讀取。如果他在字符串中做'\ n'這樣的事情,他只需要避開反斜槓 – ytpillai