2015-07-12 87 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